在集成管道模式下,正确的处理程序是 svc-Integrated-4.0 处理程序。
我通过反复试验和阅读Codeplex 上 Nuget Server 的源代码发现了这一点。
这篇关于 ASP.NET 如何处理您的请求的文章对于理解幕后发生的事情也很有帮助。
此外,要使此答案正确,您需要确保应用程序池处于集成管道模式而不是经典模式。
下面列出了需要更改的 Web.config 的相关部分,特别是现在支持的动词列表。
<system.webServer>
<handlers>
<remove name="svc-Integrated-4.0" />
<add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
<add name="svc-Integrated-4.0" path="*.svc" verb="GET,PUT,POST,DELETE,DEBUG" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>