簡體   English   中英

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

[英]Enabling CORS with ASP.NET WEb API hosted by IIS 8.5

我在托管通過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應用程序,處理程序映射和自定義標頭。 還是我在這里做錯了什么?

我想知道您的應用程序配置是否存在問題。 使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM