Dmi*_* S. 5 rest iis-7 asp.net-mvc-3
我想在用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>
Run Code Online (Sandbox Code Playgroud)
动作方法用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.
如果你必须使用自定义模块处理这种请求,顺便说一下,请记住,处理程序本身有责任为每个请求设置状态代码(包括它应该处理的请求,根据映射,但它不能出于任何原因)并且可能在完成时没有设置正确的值.
| 归档时间: |
|
| 查看次数: |
2951 次 |
| 最近记录: |