Lỗi HTTP 500,19 và mã lỗi: 0x80070021


219

Tôi có một bản dựng webAPI đơn giản của Visual Studio 2013. Nó hoạt động tốt khi tôi chạy nó từ VS13 nhưng khi tôi sao chép dự án trong IIS cục bộ thì nó gây ra lỗi sau.

Lỗi HTTP 500.19 - Lỗi máy chủ nội bộ Không thể truy cập trang được yêu cầu vì dữ liệu cấu hình liên quan cho trang không hợp lệ.

Thông tin lỗi chi tiết:

Mô-đun IIS Web Core

Thông báo BeginRequest

Xử lý chưa được xác định

Mã lỗi 0x80070021

Lỗi cấu hình Phần cấu hình này không thể được sử dụng tại đường dẫn này. Điều này xảy ra khi phần bị khóa ở cấp độ cha. Việc khóa là theo mặc định (overrideModeDefault = "Deny") hoặc được đặt rõ ràng bằng thẻ vị trí với overrideMode = "Deny" hoặc legacy allowOverride = "false".

Cấu hình tệp \? \ C: \ inetpub \ wwwroot \ APITeslin \ web.config

Nguồn cấu hình:

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

Đây có thể là xác thực Windows bị vô hiệu hóa trong IIS, nhưng bắt buộc phải có trong web.config của ứng dụng của bạn.
SpaceBison


@SpaceBison làm cách nào tôi có thể kích hoạt Xác thực cửa sổ trong IIS8?
Umar Abbas

Đây là liên kết của tập tin webconfig của tôi. iawaii.co.uk/Webconfig.txt
Umar Abbas

Bạn đã xem xét sử dụng mô-đun viết lại URL?

Câu trả lời:


346

Có chính xác lỗi tương tự và đi đến câu hỏi này. Như @SpaceBison đã đề cập trong các bình luận, câu trả lời này mô tả giải pháp - https://stackoverflow.com/a/12867753/404099 . Tôi phát hiện ra nó quá muộn và nó bỏ lỡ một số bước. Đây là những gì làm việc cho tôi:

Máy chủ Windows 2012, IIS 8.5 . Nên làm việc cho các phiên bản khác quá.

  • Chuyển đến trình quản lý máy chủ, nhấp vào thêm vai trò và tính năng
  • Trong phần vai trò chọn: Máy chủ Web
    • Trong phần phụ Bảo mật, hãy chọn mọi thứ (Tôi đã loại trừ thông báo, hạn chế IP và ủy quyền URL khi chúng tôi không sử dụng chúng)
    • Trong phần Phát triển ứng dụng, chọn .NET Extensibility 4.5, ASP.NET 4.5 và cả hai mục ISAPI
  • Trong phần tính năng, chọn: NET 3.5, .NET 4.5, ASP.NET 4.5
  • Trong phần máy chủ web, chọn: Máy chủ Web (tất cả), Công cụ quản lý (Bảng điều khiển quản lý IIS và Dịch vụ quản lý), Xác thực Windows - nếu bạn đang sử dụng bất kỳ ứng dụng nào

13
Tất cả những gì tôi phải thêm là các mục .NET 4.5 trong phần AppDev và phần Tính năng. Mục mở rộng cũng buộc 2 mục ISAPI.
Bill

Những bước giúp tôi có vấn đề. Cảm ơn.
psulek

Cuối cùng, một giải pháp để giải quyết các bệnh của tôi. Cảm ơn, nó có ý nghĩa, và nó đủ đơn giản. Dường như luôn thiếu các tính năng và vai trò trong những ngày này ...
Alexandru

ServerManager không có sẵn trong Windows7 Home, làm thế nào để khắc phục nó?
knocte

1
@knocte - trong Windows 7, bạn có thể nhập "Gỡ cài đặt hoặc thay đổi chương trình" và sau đó nhấn "Bật hoặc tắt tính năng của Windows". Điều này không giống như Trình quản lý máy chủ, nhưng bạn có thể cài đặt IIS và các tính năng liên quan theo cách này.
Ilia Barahovski

122

Tôi đã gặp lỗi này khi cố gắng lưu trữ một dịch vụ WCF trong một ứng dụng ASP.NET trống. Toàn bộ giải pháp là sử dụng nền tảng .NET 4.5, trên IIS 8.5 chạy trên Windows 8.1. Gotcha là để

  1. Mở "Bật hoặc tắt tính năng của Windows"

  2. Chuyển đến phần WCF trong dịch vụ nâng cao ASP.NET 4.5

  3. Kiểm tra kích hoạt HTTP.

  4. Bạn sẽ được yêu cầu khởi động lại hệ thống.

    Ảnh chụp màn hình

Điều này sẽ sửa HTTP 500.19!

EDIT 11-FEB-2016 Chỉ gặp sự cố trên Windows 10 Pro, IIS 10, Lần này, đó là HTTP 404.0. Cách khắc phục vẫn như cũ, bật "Kích hoạt HTTP" trong Tính năng của Windows -> .NET Framework 4.6 Dịch vụ nâng cao -> Dịch vụ WCF -> Kích hoạt HTTP


Cảm ơn bạn rất nhiều @dotnetguy! :-) nó cũng làm việc cho tôi. Lỗi xảy ra khi tôi cố lưu trữ Web API 2.2 và MVC trên ứng dụng ASP.NET rỗng.
Guruseshe

@dotnetguy Đây chính xác là những gì đã giúp tôi sau khi không thể khiến IIS hoạt động với ứng dụng MVC cục bộ của tôi trong Visual Studio. Cám ơn rất nhiều. Kích hoạt HTTP là thế!
lửa lụa

@silkfire rất vui vì nó đã giúp!
Sudhanshu Mishra

@dotnetguy Cảm ơn
Heemanshu Bhalla

@dotnetguy Có cùng một vấn đề chính xác và điều này đã giải quyết nó! Cảm ơn rất nhiều! Bạn thực sự là một chàng trai .Net! : D
Rian

47

Tôi cũng gặp vấn đề tương tự nhưng sau cơn bão não với IIS và google trong nhiều giờ. Tôi tìm ra giải pháp. Lỗi này là do một số cài đặt bị vô hiệu hóa trong IIS applicationHost.config.

Dưới đây là các bước để giải quyết:

  1. Đi đến C:\Windows\System32\inetsrv\config\applicationHost.configvà mở trong notepad
  2. Thay đổi giá trị khóa sau có trong

    • <section name="handlers" overrideModeDefault="Deny" /> thay đổi giá trị này từ "Từ chối" thành "Cho phép"

    • <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" /> thay đổi giá trị này từ "Từ chối" thành "Cho phép"

Nó làm việc cho tôi.


2
Cảm ơn bạn. Sau khi thực hiện các bước này, lỗi tiếp theo xuất hiện. Tôi có thể giải quyết nó như được mô tả ở đây: stackoverflow.com/a/30594003/434742
Jenny O'Reilly

31

Nếu bạn đang chạy IIS trên máy tính đó lần đầu tiên, bạn nên thử chạy công cụ đăng ký ASP.NET IIS (aspnet_regiis.exe).

Dưới đây là cách thực hiện: Nếu bạn đang sử dụng .net framework v4, hãy mở dấu nhắc lệnh với tư cách quản trị viên và thay đổi thư mục thành thư mục cơ sở khung .net của bạn bằng cách sử dụng:

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

hoặc, nếu bạn đang sử dụng máy tính 64 bit, hãy sử dụng:

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

Khi bạn đã điều hướng thành công vào thư mục thích hợp, hãy thực thi công cụ đăng ký ASP.NET IIS bằng cách sử dụng:

aspnet_regiis -i

Nếu bạn đang sử dụng phiên bản .NET framework khác, chỉ cần thay thế v4.0.30319 bằng tên thư mục phù hợp.

Hi vọng điêu nay co ich.


Tôi đang cố gắng chạy hai dự án VS khác nhau trên máy chủ iis của mình (máy ảo); một hoạt động, một không ... Những điều trên đã giúp làm việc đầu tiên; Có bất kỳ lý do thứ 2 không nên làm việc?
JosephDoggie

7
Tôi đã sử dụng phương pháp này trong quá khứ nhưng aspnet_regiis không còn được hỗ trợ trên Windows 8.1. Để đăng ký 4.5, hãy sử dụng Chương trình và Tính năng> Bật hoặc tắt các tính năng của Windows> Dịch vụ thông tin thông tin> Dịch vụ web toàn cầu> Tính năng phát triển ứng dụng> Kiểm tra ASP.NET 4.5 và bất cứ điều gì khác bạn có thể cần.
masterwok

1
điều này cần được chạy với tư cách Quản trị viên (nhấp chuột phải vào biểu tượng cmd.exe -> chạy với tư cách quản trị viên) và thậm chí nếu nó có thể phát hiện lỗi trong quá trình thao tác (và tạo tệp nhật ký), nó hoạt động với tôi!
knocte

2
Đối với IIS 8.5 trên Windows 8.1 (hoặc Windows Server 2012), điều này không hoạt động. Tôi nhận được lời nhắc sau: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis.exe -i Bắt đầu cài đặt ASP.NET (4.0.30319.33440). Tùy chọn này không được hỗ trợ trên phiên bản hệ điều hành này. Thay vào đó, quản trị viên nên cài đặt / gỡ cài đặt ASP.NET 4.5 bằng IIS8 bằng hộp thoại "Bật / Tắt tính năng của Windows", công cụ quản lý Trình quản lý máy chủ hoặc công cụ dòng lệnh merg.exe.
Sudhanshu Mishra

Cảm ơn!! Nó hoạt động với tôi với IIS 10 và Windows 10 :)
Víctor Beltrán

22

Tôi đã giải quyết điều này bằng cách làm như sau:

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

nhập mô tả hình ảnh ở đây


10

Trên Windows 8.1, IIS 8.5, giải pháp cho tôi là đăng ký 4.5 từ bảng điều khiển:

Chương trình và Tính năng> Bật hoặc tắt các tính năng của Windows> Dịch vụ thông tin thông tin> Dịch vụ web toàn cầu> Tính năng phát triển ứng dụng> Chọn ASP.NET 4.5

Nhấn OK.


3
Trong các lựa chọn của Windows 10 là 'ASP', ASP.NET.35. 'Và' ASP.NET 4.6 '. Kiểm tra 4.6 làm việc cho tôi. Cảm ơn!
PeterVermont

Tôi nghĩ rằng đây là câu trả lời ngắn gọn và dễ hiểu nhất.
lượng

4

Vì lỗi idnicates - "Điều này xảy ra khi phần bị khóa ở cấp độ cha mẹ". Để mở khóa phần bạn có thể sử dụng appcmd.exe và thực hiện lệnh sau:

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

Để biết thêm thông tin về khóa phần và bối cảnh cấu hình cha được tham khảo tài liệu IIS .


4

Trong trường hợp của chúng tôi, chúng tôi đã vật lộn với lỗi này trong một vài ngày. Nó chỉ ra rằng trong bảng điều khiển, chương trình, bật hoặc tắt các tính năng của windows.

Chúng tôi đã chọn Dịch vụ thông tin Internet, dịch vụ web trên toàn thế giới, các tính năng phát triển ứng dụng và ở đó chúng tôi kiểm tra bộ tính năng liên quan đến môi trường phát triển của chúng tôi. Ví dụ: ASP.NET 4.6. Khả năng mở rộng .NET 4.6, v.v.

Nó hoạt động!


1
Điều này đã khắc phục vấn đề của tôi là tốt. Vì vậy, vấn đề cuối cùng là sau khi thêm IIS vào máy cục bộ của tôi, tôi đã không kích hoạt các tính năng phù hợp. Điều này đã giải quyết nó. THnks.
jbooker

3

Hãy thử mở khóa cài đặt cấu hình IIS (7.5) có liên quan ở cấp máy chủ, như sau:

  1. Mở trình quản lý IIS
  2. Chọn máy chủ trong khung Kết nối
  3. Mở Trình chỉnh sửa cấu hình trong khung chính
  4. Trong phần thả xuống, chọn phần để mở khóa, ví dụ system.webServer> defaultPath
  5. Nhấp vào Mở khóa thuộc tính trong khung bên phải
  6. Lặp lại cho bất kỳ cài đặt nào khác mà bạn cần mở khóa
  7. Khởi động lại IIS (tùy chọn) - Chọn máy chủ trong ngăn Conncetions, nhấp vào Khởi động lại trong ngăn Hành động

Điều này gần như hữu ích nhưng trên IIS 7 không có "defaultPath" trong system.webServer
Djorge

Điều đó có nghĩa là nếu bạn đang tìm cách cập nhật Xác thực Windows thì bạn sẽ tìm thấy nó trong đường dẫn system.webServer -> Bảo mật -> Xác thực.
Mido

3

Trong trường hợp của tôi, có các quy tắc cho mô-đun Viết lại URL IIS nhưng tôi chưa cài đặt mô-đun đó. Bạn nên kiểm tra web.config nếu có bất kỳ mô-đun nào đi kèm nhưng chưa được cài đặt.


1
Chỉ cần cài đặt mọi thứ khác cần thiết, nhưng vẫn không làm cho nó hoạt động. Sau đó, tôi chỉ cần cài đặt mô-đun Viết lại URL và làm cho nó hoạt động! Cảm ơn!
Vitox

Nếu thiếu mô-đun Viết lại URL, mã lỗi sẽ không là 0x80070021.
Lex Li

3

Nếu đó là windows 10 thì hãy mở powershell với tư cách quản trị viên và chạy lệnh sau:

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

1

Web.config của bạn mô tả rằng bạn đang sử dụng xác thực mẫu - đảm bảo bạn bật xác thực mẫu và tắt xác thực ẩn danh trong IIS trong menu Xác thực cho trang web đang chạy trong IIS.


0

Vui lòng <staticContent />xếp hàng và xóa nó khỏi web.config.


0

Chà, chúng tôi đang sử dụng Dịch vụ web của Amazon và vì vậy chúng tôi đang tìm cách sử dụng các tập lệnh và chương trình để khắc phục vấn đề này. Vì vậy, tôi đã săn lùng một công cụ dòng lệnh. Vì vậy, trước tiên tôi đã thử mẹo chạy

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

nhưng vì tôi đang chạy Windows Server 2012 trên nền tảng đám mây nên nó đã phàn nàn

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.

và tôi đã tìm kiếm và tìm thấy Trang hỗ trợ chính thức của Microsoft KB2736284 . Vì vậy, có một công cụ dòng lệnh dism.exe. Vì vậy, tôi đã thử như sau

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

nhưng nó đã phàn nàn và đưa ra một danh sách các featurenames để thử, vì vậy tôi đã thử từng cái một và tôi đã kiểm tra trang web WebAPI của mình sau mỗi cái và nó hoạt động sau cái cuối cùng trong danh sách.

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 

Và bây giờ tôi có thể duyệt đến trang WebAPI của mình và xem thông tin API. Điều đó sẽ giúp một vài người. [Tuy nhiên, tôi vẫn chưa ra khỏi rừng hoàn toàn và tôi không thể truy cập trang web từ bên ngoài hộp. Vẫn đang làm việc với nó.]

Ngoài ra, tôi đã làm một số bước trước đó sau phản ứng của người khác. Tôi có thể xác nhận rằng Phân quyền tính năng sau đây cần được thay đổi (mặc dù tôi muốn tìm một công cụ dòng lệnh cho những thứ này).

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

Kiểm tra xem máy chủ IIS có cài đặt tính năng ghi lại URL không.
Nếu nó chưa được cài đặt thì hãy đảm bảo tệp web.config của bạn không có cấu hình liên quan đến ghi lại 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=".*"/> ...

Đôi khi chúng tôi sao chép cấu hình từ máy chủ cũ và ngay lập tức triển khai sang máy chủ hoàn toàn mới, sau đó chúng tôi có thể gặp phải loại vấn đề 500 như vậy.


Nếu URL Rewrite bị thiếu, mã lỗi sẽ không là 0x80070021.
Lex Li


-3

Giải pháp hiệu quả với tôi là xóa Web.config hiện tại của tôi và thêm một cái mới. Điều đó đã giải quyết vấn đề cho tôi


6
Từ chức từ công việc của tôi dễ dàng hơn việc tạo một web.config mới. Đừng bao giờ cố gắng làm như vậy.
Shadi Namrouti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.