2013-06-17 53 views
10

Tôi có cả WebDAV được cài đặt và chạy trên trang web của mình, dưới dạng trang web ảo tôi có MVC WebAPI trang web, API hoạt động tuyệt vời, cho đến khi tôi cố gắng để gửi một yêu cầu PUT để nó, sau đó tôi nhận được lỗi sau:WebDAV và WebAPI cùng nhau gây ra Lỗi: Trình xử lý "ExtensionlessUrlHandler-Integrated-4.0" có mô-đun xấu "ManagedPipelineHandler" trong danh sách mô-đun của mình

lỗi HTTP 500,21 - Internal server error

Handler "ExtensionlessUrlHandler-Tích hợp-4.0 "có mô-đun xấu" ManagedPipelineHandler "trong danh sách mô-đun

Nếu tôi tắt WebDAV, thì mọi thứ hoạt động tốt và tôi sẽ không gặp lỗi. Điều này chỉ xảy ra khi WebDAV được bật.

tôi có tất cả các đoạn mã sau trong web.config của tôi:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="false"> 
    <remove name="WebDAVModule" /> 
    </modules> 
    <handlers> 
    <remove name="WebDAV" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
</system.webServer> 

Tôi đã thử rối tung với hồ bơi ứng dụng khác nhau.

Tôi cũng đã mệt mỏi tất cả những điều đề cập trong tất cả các câu hỏi sau:

How to get rid of this error Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list

Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list

How to fix: Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list

Không ai trong số này đã giải quyết vấn đề của tôi, là có bất cứ điều gì khác mà tôi chưa thử?

+0

Trong cấu hình của bạn nếu bạn không xóa trình xử lý WebDav và thay vào đó, hãy thêm nó sau khi ExtensionlessUrlHandler làm điều đó gây ra cùng một vấn đề? –

Trả lời

21

Chúng tôi đã kết thúc đi cho Microsoft với điều này, họ xem xét nó trong vài tuần trước khi quay trở lại nói rằng không thể chạy WebDAV và WebAPI trong cùng một trang.

Họ sẽ cố giải quyết vấn đề này trong bản phát hành IIS trong tương lai.

0

Bạn có thể gặp sự cố về lỗi chính tả trong việc khai báo các trình xử lý. Thomas Marquardt's Blog says

5.0 Troubleshooting

If you receive an error similar to the one below, your section is probably invalid.

HTTP Error 500.21 - Internal Server Error Handler "" has a bad module "ManagedPipelineHandler" in its module list You probably have a handler mapping that does not have the correct precondition. IIS is not forgiving in regard to typos, and preconditions are case-sensitive. The text must be preCondition=”integratedMode” or preCondition=”classicMode”.

Ngoài ra, một đề nghị từ các ý kiến ​​về bài viết rằng:

Andrew Johnson 25 Jan 2011 3:20 AM #:

I found that I can also get the "Handler has a bad module ManagedPipelineHandler in its module list" if the handler has requireAccess="None". For me, changing this to requireAccess="Read" made the error go away.

bình luận đó có thể áp dụng đối với trường hợp của bạn như tôi thấy rằng trong applicationHost.config mục nhập cho xử lý WebDav là (chú ý requredAccess="None"):

<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> 
1

@jblaske có phản hồi tốt.

Nếu bạn muốn xóa tạm thời thì có lẽ this article là giải pháp tốt nhất.

Nếu bạn muốn loại bỏ trình xử lý tất cả cùng nhau, hãy làm theo các bước sau.

  1. Mở IIS và chuyển đến trang web được đề cập.
  2. Bấm vào "Handler Mappings"
  3. Tìm handler có tên là "WebDAV"
  4. Chọn nó và Remove nó

Đây là original post tôi.

+0

Cảm ơn bạn đã giúp tôi xóa ít phiền hà này *****: D +1 – ppumkin