asp.net-mvc-3 - 在 IIS 7/7.5 中注册 PATCH HTTP 动词

标签 asp.net-mvc-3 rest iis-7

我想在使用 ASP MVC 3 实现的 RESTful 服务中实现最近批准的 PATCH HTTP 动词。我在 web.config 文件中添加了以下设置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="PATCHVerbHandler" path="*" verb="PATCH" modules="ProtocolSupportModule" requireAccess="None" /> 
        </handlers>
        <security>
            <requestFiltering>
                <verbs>
                    <add verb="PATCH" allowed="true" />
                </verbs>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

Action 方法用 AcceptVerbs("PATCH") 修饰。属性。

该服务与 PATCH 动词一起正常工作。 URL 被路由到正确的操作方法并返回正确的数据。

奇怪的问题是,如果我使用不匹配任何使用 PATCH 动词的路由的不同 URL,IIS 返回“200 OK”而不是“404 Not Found”。所有标准动词(GET、PUT、DELETE、POST、HEAD、OPTIONS)都没有这个问题。

我需要为 PATCH 动词注册额外的处理程序还是路由问题?任何帮助表示赞赏。

最佳答案

您实际上不需要自定义处理程序来处理使用 PATCH 动词发出的 HTTP 请求;相反,您可能希望继续使用 AcceptVerbs("PATCH") 来装饰您的操作。属性,同时检查 ASP.NET ISAPI 是否配置为处理任何动词(这是默认设置),包括 PATCH。

如果您必须使用自定义模块处理此类请求,请记住,处理程序本身有责任为每个请求设置状态代码(包括它应该处理的那些,根据映射,但它不能出于任何原因),也许它在完成时没有设置正确的值。

关于asp.net-mvc-3 - 在 IIS 7/7.5 中注册 PATCH HTTP 动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773109/

相关文章:

asp.net - ASP.NET v4无扩展URL功能在IIS 6.0上不起作用

java - 如何返回等于带有所有查询参数的被调用端点的字符串

wcf - 在 IIS7 和 Windows 7 中配置 WCF

c# - MVC 内联代码未在 html 标签中呈现

asp.net-mvc-3 - MVC 将方法添加到 jquery.validate.unobtrusive.js 中

javascript - 如何将选择列表选项发布到 MVC 操作方法?

rest - 使用 Websockets 代替 RESTful HTTP 有哪些陷阱?

web-services - 记录 ServiceStack Web 服务

wcf - HTTP 错误 500.19 - 内部服务器错误 请求的页面无法 (WCF + REST + IIS7 + SSL)

.net - maxRequestLength 的最大值?