使用IIS 8.5托管的ASP.NET WEb API启用CORS

时间:2014-04-01 06:53:59

标签: angularjs iis asp.net-web-api

我遇到了通过在2012 R2中运行的IIS 8.5托管启用CORS的ASP.NET(2.1)Web API的问题。我在Web API配置中使用以下代码启用了CORS:

config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

当使用IIS express在dev机器上运行时,angular.js客户端可以正确调用web api。浏览器首先发送OPTIONS,然后发送GET,POST,PUT或DELETE。没问题。

然后我在IIS 8.5中创建了新的网站,并将我的web api应用程序部署到其中。首先,我遇到了浏览器为每个OPTIONS请求收到HTTP 405的问题。好的,我为我的网站启用了OPTIONSVerbHandler,浏览器开始收到200 OK。但它错过了所有需要的CORS标头。我可以通过在每个Web请求中手动添加自定义标头来克服这一点。

这让我想知道为什么我需要在不同的地方定义CORS设置; web api应用程序,处理程序映射和自定义标头。或者我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我想知道您的应用程序的配置是否存在问题。请使用web.config文件中的以下设置重试:

<system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" 
           preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>