我有一个ASP.NET Web API应用程序运行在带有MVC 4.0的.NET 4.0上。此操作在IIS 7.5、Windows Server 2008 R2数据中心版上运行。
当我向myserver/api
发出HTTP GET
请求时,我会得到一个包含适当内容的HTTP状态代码为200
(如果未登录,则为401
)的响应。
但是,当我对同一个url发出HTTP OPTIONS
请求时,我总是得到一个状态代码为200
的响应和一个空的响应体(Content-length = 0
)。
此外,当我对一个不存在的url(例如myserver/api/foo
)发出HTTP OPTIONS
请求时,我也会得到这个响应。
OPTIONS
谓词在我的web.config
文件中是允许的。
问题仅出现在一台服务器上,其他服务器正常工作。
为什么会发生这种情况?
IIS有一个默认的OPTIONSVerbHandler,它可能会在MVC之前捕获请求。如果删除该处理程序,则应用程序应处理该请求并返回正确的响应。
<system.webServer>
<handlers>
<remove name="OPTIONSVerbHandler" />