【问题标题】:Enabling CORS with ASP.NET WEb API hosted by IIS 8.5使用 IIS 8.5 托管的 ASP.NET WEB API 启用 CORS
【发布时间】:2014-05-11 19:25:24
【问题描述】:

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

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

在使用 IIS express 的开发机器上运行时,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 应用程序、处理程序映射和自定义标头。还是我在这里做错了什么?

【问题讨论】:

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


    【解决方案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>
    

    【讨论】:

    • 谢谢。我在 web.config 中有这个,所以我想不是这样。我从 IIS 中删除了 OPTIONS 处理程序和自定义标头并重新启动了 IIS。然后它开始工作。所以问题是重新启动整个 IIS,而不仅仅是站点
    • @IlkkaHauta-aho - 嗨,我和你有同样的问题,你最终把什么作为自定义标题放在你的 web.config 中?另外,您是否在 global.asax.cs 和控制器中添加了任何内容?
    猜你喜欢
    • 2019-07-03
    • 2012-08-24
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多