【发布时间】:2016-06-23 22:51:03
【问题描述】:
我为部署到本地运行的 IIS 7.5 的 C# ASP.Net 应用程序编写了 custom HTTP module。我的客户将 POST 请求发送到像 "http://localhost:9999" 这样的 URL。我可以看到我的自定义模块正在执行,并在我在自定义模块的 Init() 方法中注册的事件处理程序中返回正确的响应。但是,返回给我的客户端的实际 HTTP 响应在其标头中包含以下内容:
HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD, OPTIONS, TRACE
令人讨厌的是,我可以在 HTTP 响应的正文中看到我期望的响应,但标头告诉客户端 405 Method Not Allowed,因此客户端调用失败!请问有谁知道如何阻止这个错误?
这是我应用的 web.config 的相关部分:
<system.webServer>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<modules>
<remove name="WebDAVModule"/>
<add name="AuthServiceModule" type="AuthServiceHTTPModule.App_Code.AuthServiceModule"/>
</modules>
</system.webServer>
AuthServiceModule 是我的自定义模块的名称。我在 system.webServer 元素中尝试了许多不同的选项,但似乎没有一个允许 POST 请求通过。我宁愿有一个涉及应用程序内配置而不是 IIS 本身的解决方案。
【问题讨论】: