IIS配置HTTP OPTIONS返回200,但响应为空



我有一个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" />

最新更新