HTTP Error 500.19 และรหัสข้อผิดพลาด: 0x80070021


219

ฉันมี webAPI build อย่างง่ายโดย Visual Studio 2013 มันทำงานได้ดีเมื่อฉันเรียกใช้จาก VS13 แต่เมื่อฉันคัดลอกโครงการใน IIS ท้องถิ่นมันทำให้ฉันมีข้อผิดพลาดดังต่อไปนี้

HTTP Error 500.19 - ข้อผิดพลาดเซิร์ฟเวอร์ภายในไม่สามารถเข้าถึงหน้าที่ร้องขอได้เนื่องจากข้อมูลการกำหนดค่าที่เกี่ยวข้องสำหรับหน้านั้นไม่ถูกต้อง

ข้อมูลข้อผิดพลาดโดยละเอียด:

โมดูล IIS Web Core

ประกาศ BeginRequest

ตัวจัดการ ยังไม่ได้ตัดสินใจ

รหัสข้อผิดพลาด 0x80070021

ข้อผิดพลาด การกำหนดค่าส่วนการกำหนดค่านี้ไม่สามารถใช้ที่เส้นทางนี้ สิ่งนี้เกิดขึ้นเมื่อส่วนถูกล็อคในระดับผู้ปกครอง การล็อคเป็นค่าเริ่มต้น (overrideModeDefault = "Deny") หรือตั้งค่าอย่างชัดเจนโดยแท็กตำแหน่งที่มี overrideMode = "Deny" หรือ Legacy allowOverride = "false"

กำหนดค่าไฟล์ \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

แหล่งกำหนดค่า:

36:   <system.webServer>  
37:     <handlers>  
38:       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

นี่น่าจะเป็นการปิดใช้งานการรับรองความถูกต้องของ Windows ใน IIS แต่จำเป็นต้องมีในเว็บแอปพลิเคชันของคุณ
SpaceBison


@SpaceBison ฉันจะเปิดใช้งาน Window Authentication ใน IIS8 ได้อย่างไร
Umar Abbas

นี่คือลิงค์ของไฟล์ webconfig ของฉัน icopter.co.uk/Webconfig.txt
Umar Abbas

คุณได้พิจารณาใช้โมดูลการเขียน URL ใหม่หรือไม่?

คำตอบ:


346

มีข้อผิดพลาดเดียวกันอย่างแม่นยำและมาถึงคำถามนี้ ในฐานะที่เป็น @SpaceBison กล่าวถึงในความคิดเห็นคำตอบนี้อธิบายถึงการแก้ปัญหา - https://stackoverflow.com/a/12867753/404099 ฉันเห็นมันสายเกินไปและพลาดขั้นตอนไปบ้าง นี่คือสิ่งที่ได้ผลสำหรับฉัน:

Windows Server 2012, IIS 8.5 ควรทำงานกับเวอร์ชันอื่นด้วย

  • ไปที่ผู้จัดการเซิร์ฟเวอร์คลิกเพิ่มบทบาทและคุณสมบัติ
  • ในส่วนบทบาทให้เลือก: เว็บเซิร์ฟเวอร์
    • ในส่วนย่อยความปลอดภัยเลือกทุกอย่าง (ฉันแยกส่วนย่อย, ข้อ จำกัด IP และการอนุญาต URL เนื่องจากเราไม่ได้ใช้)
    • ภายใต้การพัฒนาแอปพลิเคชันเลือก. NET Extensibility 4.5, ASP.NET 4.5 และรายการ ISAPI ทั้งคู่
  • ในส่วนคุณลักษณะให้เลือก: NET 3.5, .NET 4.5, ASP.NET 4.5
  • ในส่วนของเว็บเซิร์ฟเวอร์ให้เลือก: เว็บเซิร์ฟเวอร์ (ทั้งหมด), เครื่องมือการจัดการ (คอนโซลการจัดการ IIS และบริการการจัดการ), การตรวจสอบสิทธิ์ Windows - หากคุณใช้งานใด ๆ

13
สิ่งที่ฉันต้องเพิ่มคือรายการ. NET 4.5 ในส่วน AppDev และส่วนคุณสมบัติ รายการที่ขยายได้บังคับ 2 รายการ ISAPI
Bill

ขั้นตอนเหล่านั้นช่วยฉันด้วยปัญหา ขอบคุณ
psulek

ในที่สุดการแก้ปัญหาในการแก้โรคของฉัน ขอบคุณมันสมเหตุสมผลและเรียบง่ายพอ มันก็น่าจะหายไปจากคุณลักษณะและบทบาทวันนี้ ...
อเล็กซานด

ServerManager ไม่มีอยู่ใน Windows7 Home วิธีการแก้ไข
knocte

1
@ Knocte - ใน Windows 7 คุณสามารถป้อน "ถอนการติดตั้งหรือเปลี่ยนโปรแกรม" แล้วกด "เปิดหรือปิดคุณสมบัติ Windows" สิ่งนี้ไม่เหมือนกับ Server Manager แต่คุณสามารถติดตั้ง IIS และคุณสมบัติที่เกี่ยวข้องได้ด้วยวิธีนี้
Ilia Barahovski

122

ฉันได้รับข้อผิดพลาดนี้ขณะพยายามโฮสต์บริการ WCF ในแอปพลิเคชัน ASP.NET ที่ว่างเปล่า โซลูชันทั้งหมดใช้แพลตฟอร์ม. NET 4.5 บน IIS 8.5 ที่ทำงานบน Windows 8.1 gotcha คือการ

  1. เปิด "เปิดหรือปิดคุณสมบัติ Windows"

  2. ไปที่ส่วน WCF ภายใต้บริการขั้นสูง ASP.NET 4.5

  3. ตรวจสอบการเปิดใช้งาน HTTP

  4. คุณจะถูกขอให้รีสตาร์ทระบบ

    สกรีนช็อต

สิ่งนี้ควรแก้ไข HTTP 500.19!

แก้ไข 11-FEB-2016เพิ่งมีปัญหาใน Windows 10 Pro, IIS 10, ครั้งนี้เป็น HTTP 404.0 การแก้ไขยังคงเหมือนเดิมเปิด "การเปิดใช้งาน HTTP" ภายใต้คุณลักษณะ Windows ->. NET Framework 4.6 บริการขั้นสูง -> บริการ WCF -> การเปิดใช้งาน HTTP


ขอบคุณ @dotnetguy มาก! :-) มันใช้ได้สำหรับฉันด้วย ข้อผิดพลาดเกิดขึ้นเมื่อฉันพยายามโฮสต์ Web API 2.2 และ MVC บนแอปพลิเคชัน ASP.NET ที่ว่างเปล่า
Gurusinghe

@dotnetguy นี่คือสิ่งที่ช่วยฉันหลังจากที่ไม่สามารถรับ IIS ให้ทำงานกับแอปพลิเคชัน MVC ในพื้นที่ของฉันใน Visual Studio ขอบคุณมาก. การเปิดใช้งาน HTTPคือ!
silkfire

@ silkfire ดีใจที่ได้ช่วย!
Sudhanshu Mishra

@dotnetguy ขอบคุณ
Heemanshu Bhalla

@dotnetguy มีปัญหาที่แน่นอนเหมือนกันและสิ่งนี้แก้ไขได้! ขอบคุณมาก! คุณเป็นผู้ชาย. Net จริงๆ! : D
Rian

47

ฉันยังได้รับปัญหาเดียวกัน แต่หลังจากที่ระดมสมองกับ IIS และ google เป็นเวลาหลายชั่วโมง ฉันพบวิธีแก้ปัญหา ข้อผิดพลาดนี้เป็นเพราะการตั้งค่าบางอย่างจะปิดการใช้งานใน applicationHost.configIIS

ด้านล่างนี้เป็นขั้นตอนในการแก้ปัญหา:

  1. ไปที่C:\Windows\System32\inetsrv\config\applicationHost.configและเปิดในแผ่นจดบันทึก
  2. เปลี่ยนค่าคีย์ต่อไปนี้ที่มีอยู่ใน

    • <section name="handlers" overrideModeDefault="Deny" /> เปลี่ยนค่านี้จาก "ปฏิเสธ" เป็น "อนุญาต"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> เปลี่ยนค่านี้จาก "ปฏิเสธ" เป็น "อนุญาต"

มันใช้งานได้สำหรับฉัน


2
ขอบคุณ. หลังจากทำตามขั้นตอนเหล่านี้แล้วข้อผิดพลาดต่อไปก็ปรากฏขึ้น ฉันสามารถแก้มันได้ตามที่อธิบายไว้ที่นี่: stackoverflow.com/a/30594003/434742
Jenny O'Reilly

31

หากคุณใช้ IIS บนคอมพิวเตอร์เครื่องนั้นเป็นครั้งแรกคุณควรลองใช้เครื่องมือลงทะเบียน ASP.NET IIS (aspnet_regiis.exe)

ต่อไปนี้เป็นวิธีดำเนินการ: หากคุณใช้. net framework v4 ให้เปิด command command ในฐานะผู้ดูแลระบบและเปลี่ยนไดเรกทอรีเป็นโฟลเดอร์พื้นฐาน. net Framework โดยใช้:

CD C:\Windows\Microsoft.NET\Framework\v4.0.30319

หรือหากคุณใช้คอมพิวเตอร์ 64 บิตให้ใช้:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

เมื่อคุณสำรวจไปยังไดเรกทอรีที่เหมาะสมให้รันเครื่องมือการลงทะเบียน ASP.NET IIS โดยใช้:

aspnet_regiis -i

หากคุณใช้. NET Framework เวอร์ชั่นอื่นให้แทนที่v4.0.30319ด้วยชื่อโฟลเดอร์ที่เหมาะสม

หวังว่านี่จะช่วยได้


ฉันพยายามเรียกใช้ VS โครงการที่แตกต่างกันสองรายการบนเซิร์ฟเวอร์ iis ของฉัน (เครื่องเสมือน); งานเดียวงานหนึ่งไม่ ... งานด้านบนช่วยให้ทำงานได้เป็นครั้งแรก มีเหตุผลใดที่ 2 ไม่ควรทำงาน?
JosephDoggie

7
ฉันใช้วิธีนี้ในอดีต แต่ aspnet_regiis ไม่รองรับ Windows 8.1 อีกต่อไป หากต้องการลงทะเบียน 4.5 ให้ใช้โปรแกรมและคุณลักษณะ> เปิดหรือปิดคุณสมบัติ Windows> บริการข้อมูลสารสนเทศ> บริการเวิลด์ไวด์เว็บ> คุณสมบัติการพัฒนาแอปพลิเคชัน> ตรวจสอบ ASP.NET 4.5 และสิ่งอื่นที่คุณอาจต้องการ
masterwok

1
จำเป็นต้องเรียกใช้ในฐานะผู้ดูแลระบบ (คลิกขวาที่ไอคอน cmd.exe -> เรียกใช้ในฐานะผู้ดูแลระบบ) และถึงแม้ว่าจะสามารถตรวจพบข้อผิดพลาดในระหว่างการทำงาน
knocte

2
สำหรับ IIS 8.5 บน Windows 8.1 (หรือ Windows Server 2012) สิ่งนี้ไม่ทำงาน ฉันได้รับพรอมต์ต่อไปนี้: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i เริ่มการติดตั้ง ASP.NET (4.0.30319.33440) ตัวเลือกนี้ไม่รองรับในระบบปฏิบัติการเวอร์ชั่นนี้ ผู้ดูแลระบบควรติดตั้ง / ถอนการติดตั้ง ASP.NET 4.5 ด้วย IIS8 แทนโดยใช้กล่องโต้ตอบ "เปิด / ปิดคุณสมบัติ Windows" เครื่องมือจัดการเซิร์ฟเวอร์ตัวจัดการหรือเครื่องมือบรรทัดคำสั่ง dism.exe
Sudhanshu Mishra

ขอบคุณ !! การทำงานสำหรับฉันกับ IIS 10 และ Windows 10 :)
VíctorBeltrán

22

ฉันแก้ไขสิ่งนี้โดยทำสิ่งต่อไปนี้:

WebServer(ISS)->WebServer->Application Development
add .NET Extensibility 3.5
add .NET Extensibility 4.5
add ASP.NET 4.5
add ISAPI Extensions
add ISAPI Filters

ป้อนคำอธิบายรูปภาพที่นี่


10

ใน Windows 8.1, IIS 8.5 วิธีแก้ปัญหาสำหรับฉันคือการลงทะเบียน 4.5 จากแผงควบคุม:

โปรแกรมและคุณลักษณะ> เปิดหรือปิดคุณสมบัติ Windows> บริการข้อมูลสารสนเทศ> บริการเวิลด์ไวด์เว็บ> คุณสมบัติการพัฒนาแอปพลิเคชัน> เลือก ASP.NET 4.5

คลิกตกลง


3
ภายใต้ตัวเลือก Windows 10 คือ 'ASP', ASP.NET.35. 'และ' ASP.NET 4.6 ' ตรวจสอบ 4.6 ทำงานให้ฉัน ขอบคุณ!
PeterVermont

ฉันคิดว่านี่เป็นคำตอบที่กระชับและเข้าใจง่ายที่สุด
คะแนน

4

ในฐานะที่เป็นข้อผิดพลาด idnicates - "สิ่งนี้เกิดขึ้นเมื่อส่วนถูกล็อคในระดับผู้ปกครอง" หากต้องการปลดล็อกส่วนคุณสามารถใช้appcmd.exeและดำเนินการคำสั่งต่อไปนี้:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers -commitpath:apphost

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนที่เกี่ยวกับการล็อคและสิ่งที่บริบทการตั้งค่าผู้ปกครองอ้างถึงเอกสาร IIS


4

ในกรณีของเราเราต่อสู้กับข้อผิดพลาดนี้มาหลายวันแล้ว ปรากฎว่าในแผงควบคุมโปรแกรมเปิดหรือปิดคุณสมบัติหน้าต่าง

เราเลือกบริการข้อมูลทางอินเทอร์เน็ตบริการบนเว็บทั่วโลกคุณสมบัติการพัฒนาแอปพลิเคชันและที่นั่นเราตรวจสอบชุดคุณลักษณะที่เกี่ยวข้องกับสภาพแวดล้อมการพัฒนาของเรา ตัวอย่างเช่น: ASP.NET 4.6 .NET Extensibility 4.6 เป็นต้น

มันได้ผล!


1
นี่เป็นการแก้ไขปัญหาของฉันเช่นกัน ดังนั้นในที่สุดปัญหาก็คือหลังจากเพิ่ม IIS ลงในเครื่องของฉันฉันไม่ได้เปิดใช้งานคุณสมบัติที่เหมาะสม สิ่งนี้ได้รับการแก้ไข thnks
jbooker

3

ลองปลดล็อคการตั้งค่าการกำหนดค่า IIS (7.5) ที่เกี่ยวข้องในระดับเซิร์ฟเวอร์ดังนี้:

  1. เปิดตัวจัดการ IIS
  2. เลือกเซิร์ฟเวอร์ในบานหน้าต่างการเชื่อมต่อ
  3. เปิดเครื่องมือแก้ไขการกำหนดค่าในบานหน้าต่างหลัก
  4. ในเมนูแบบเลื่อนลงเลือกส่วนที่จะปลดล็อคเช่นsystem.webServer> defaultPath
  5. คลิกปลดล็อกคุณสมบัติในบานหน้าต่างด้านขวา
  6. ทำซ้ำสำหรับการตั้งค่าอื่น ๆ ที่คุณต้องการปลดล็อก
  7. เริ่มต้น IIS (ไม่บังคับ) - เลือกเซิร์ฟเวอร์ในบานหน้าต่าง Conncetions คลิกรีสตาร์ทในบานหน้าต่างการทำงาน

เกือบเป็นประโยชน์ แต่ใน IIS 7 ไม่มี "defaultPath" ภายใต้ system.webServer
Djorge

โดยที่เขาหมายถึงถ้าคุณกำลังมองหาการปรับปรุง Windows รับรองความถูกต้องแล้วคุณจะพบมันในเส้นทางของระบบ web.webServer -> ความปลอดภัย -> การตรวจสอบ
Mido

3

ในกรณีของฉันมีกฎสำหรับโมดูลIIS URL Rewriteแต่ฉันไม่ได้ติดตั้งโมดูลนั้น คุณควรตรวจสอบ web.config หากมีโมดูลใด ๆ รวมอยู่ด้วย แต่ไม่ได้ติดตั้ง


1
เพิ่งติดตั้งทุกอย่างที่จำเป็น แต่ก็ยังไม่สามารถใช้งานได้ จากนั้นฉันเพิ่งติดตั้งโมดูล URL Rewrite และทำให้มันใช้งานได้! ขอบคุณ!
Vitox

หากโมดูลการเขียนซ้ำ URL หายไปรหัสข้อผิดพลาดจะไม่เป็น 0x80070021
Lex Li

3

หากเป็น windows 10 ให้เปิด powershell ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งต่อไปนี้:

dism /online /enable-feature /all /featurename:IIS-ASPNET45

1

web.config ของคุณอธิบายว่าคุณใช้การรับรองความถูกต้องของฟอร์ม - ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานการรับรองความถูกต้องของฟอร์มและปิดใช้งานการรับรองความถูกต้องแบบไม่ระบุชื่อใน IIS ภายใต้เมนูการรับรองความถูกต้องสำหรับเว็บไซต์ที่ใช้งาน IIS



0

เรากำลังใช้ Amazon Web Services อยู่ดังนั้นเราจึงต้องการใช้สคริปต์และโปรแกรมเพื่อแก้ไขปัญหานี้ ดังนั้นฉันจึงตามล่าหาเครื่องมือบรรทัดคำสั่ง ดังนั้นก่อนอื่นฉันก็ลองกลโกงการวิ่ง

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

แต่เนื่องจากฉันใช้งาน Windows Server 2012 บนคลาวด์จึงมีการร้องเรียน

This option is not supported on this version of the operating system. Administrators should instead install/uninstall ASP.NET 4.5 with IIS8 using the "Turn Windows Features On/Off" dialog, the Server Manager management tool, or the dism.exe command line tool. For more details please see http://go.microsoft.com/fwlink/?LinkID=216771.

และฉัน Googled และพบอย่างเป็นทางการของไมโครซอฟท์สนับสนุนหน้า KB2736284 dism.exeจึงมีเครื่องมือบรรทัดคำสั่ง ดังนั้นฉันจึงลองทำสิ่งต่อไปนี้

dism /online /enable-feature /featurename:IIS-ASPNET45

แต่มันก็บ่นและให้รายการของ featurenames ที่จะลองดังนั้นฉันลองพวกเขาทีละคนและฉันทดสอบหน้าเว็บ WebAPI ของฉันหลังจากที่แต่ละคนและมันทำงานหลังจากที่ด้านล่างในรายการ

dism /online /enable-feature /featurename:IIS-ApplicationDevelopment
dism /online /enable-feature /featurename:IIS-ISAPIFilter 
dism /online /enable-feature /featurename:IIS-ISAPIExtensions 
dism /online /enable-feature /featurename:IIS-NetFxExtensibility45 

ตอนนี้ฉันสามารถเรียกดูเว็บไซต์ WebAPI ของฉันและดูข้อมูล API ที่จะช่วยคนไม่กี่คน [อย่างไรก็ตามฉันยังไม่ออกจากป่าโดยสิ้นเชิงเลยและฉันไม่สามารถเข้าถึงเว็บไซต์จากนอกกรอบได้ ยังทำงานกับมันอยู่]

นอกจากนี้ฉันได้ทำตามขั้นตอนก่อนหน้านี้บางส่วนเพื่อตอบสนองต่อคนอื่น ฉันสามารถยืนยันได้ว่าการมอบหมายคุณสมบัติต่อไปนี้จำเป็นต้องเปลี่ยนแปลง (แม้ว่าฉันต้องการหาเครื่องมือบรรทัดคำสั่งสำหรับสิ่งเหล่านี้)

In Feature delegation

Change 
'Handler Mappings' from Read Only to Read/Write

Change 
'Modules' from Read Only to Read/Write

Change 
'SSL Settings' from Read Only to Read/Write

-1

ตรวจสอบว่าเซิร์ฟเวอร์ IIS ติดตั้งคุณลักษณะการเขียน URL ใหม่หรือไม่
หากไม่ได้ติดตั้งให้ตรวจสอบให้แน่ใจว่าไฟล์ web.config ของคุณไม่มีการกำหนดค่า URL ที่เกี่ยวข้องกับการเขียนซ้ำ

<!-- Make sure don't have below config, if server have not installed url rewrite feature. -->
<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/> ...

บางครั้งเราคัดลอกการกำหนดค่าจากเซิร์ฟเวอร์ดั้งเดิมและนำไปใช้กับเซิร์ฟเวอร์ใหม่ทันทีเราอาจพบปัญหา 500 อย่างดังกล่าว


หากไม่มีการเขียน URL ใหม่รหัสข้อผิดพลาดจะไม่เป็น 0x80070021
Lex Li


-3

โซลูชันที่ใช้งานได้สำหรับฉันคือการลบ Web.config ปัจจุบันของฉันและเพิ่มใหม่ นั่นช่วยแก้ไขปัญหาให้ฉันได้


6
การลาออกจากงานของฉันง่ายกว่าการสร้าง web.config ใหม่ ไม่เคยพยายามทำเช่นนั้น
Shadi Namrouti
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.