Asp.net mvc 4 为什么可以';我是否向IIS中托管的API发出跨源请求?

Asp.net mvc 4 为什么可以';我是否向IIS中托管的API发出跨源请求?,asp.net-mvc-4,azure,asp.net-web-api,azure-web-app-service,Asp.net Mvc 4,Azure,Asp.net Web Api,Azure Web App Service,我有一个ASP.NET WebApi应用程序使用IISExpress在本地运行,它允许我接受来自任何域的请求。我正在使用一个类似于所提供的DelegatingHandler来完成这项工作 这在本地运行得很好,但是在上传到Azure网站后,我得到了典型的”来源http://localhost:8080 Chrome下的“访问控制允许原点”不允许 我试图通过在处理程序中添加跟踪语句来进行调试,但没有输出,而且似乎从未执行过SendAsync,就好像IIS响应选项请求而不是将其传递给我的应用程序一样

我有一个ASP.NET WebApi应用程序使用IISExpress在本地运行,它允许我接受来自任何域的请求。我正在使用一个类似于所提供的
DelegatingHandler
来完成这项工作

这在本地运行得很好,但是在上传到Azure网站后,我得到了典型的
”来源http://localhost:8080 Chrome下的“访问控制允许原点”不允许

我试图通过在处理程序中添加跟踪语句来进行调试,但没有输出,而且似乎从未执行过SendAsync,就好像IIS响应选项请求而不是将其传递给我的应用程序一样

从开发到生产,有人遇到过类似的情况吗?

IIS(包括Azure网站中的IIS)有一个默认的选项处理程序。您需要在Web.config中将其删除。它会在消息处理程序有机会响应之前响应选项调用

<configuration>
  ...
  <system.webServer>
    <handlers>
      <remove name="OPTIONSVerbHandler" />
      ...
    </handlers>
  </system.webServer>
</configuration>

...
...

而且IISExpress似乎没有。是的,这就是为什么在部署到IIS之前您没有面对这个问题。在本地IIS服务器中也可以看到相同的行为。这似乎无法解决运行PHP的Azure网站上的问题。IIS仍然会在请求实际传递到PHP代码之前做出响应。