我遇到了通过在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应用程序,处理程序映射和自定义标头。或者我在这里做错了什么?
答案 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>