繁体   English   中英

MVC Web API-CORS政策无效

[英]MVC Web API - CORS Policy not working

我已经在现有的MVC应用程序中创建了一个简单的Web API(通过添加API控制器)。 我将API托管到本地主机,并创建了一个简单的html页面来调用服务并检查CORS。 为了启用,我用以下几行更改了我的web.config文件:

  <add name="Access-Control-Allow-Origin" value="*" />
  <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
  <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />

一切工作正常,可以通过html页面访问localhost的API。

通过相同的更改,我将其托管在服务器(共享托管服务器)上。 它抛出了同样令人讨厌的错误

XMLHttpRequest cannot load http://www.mywebsite.com/api/Booking. Invalid HTTP status code 405

根据Google上的搜索,它应该可以处理这些web.config更改。 请帮助解决问题。

谢谢

经过一整天的努力,终于解决了该问题,然后点击了“ Yaser”发布的链接。

但是我要说这并不容易 ,这就是为什么我在这里提到步骤。

  1. 首先,我们需要通过Nuget“ Install-Package Microsoft.AspNet.WebApi.Cors”安装软件包,但是如果目标框架为4.0,则无法安装。 首先通过右键单击Project => Properties转换为4.5,然后在应用程序选项卡中选择框架4.5

  2. 另一个问题是,更改框架版本后,大多数dll都将无法工作,再次右键单击解决方案,然后选择Manage Nuget Package并更新所有内容。 (在执行此操作之前,请备份您的项目)

  3. 如果一切正常,则只有一步之遥-在app_start文件夹下的webapiconfig.cs中添加以下行

    config.EnableCors();

打开API控制器后,在控制器级别添加以下行

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class BookingController : ApiController
{
}

最后一步,在生产服务器上更改web.config,添加以下行(与localhost web.config比较)

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>

所有人都进行了新的构建,并用新的........ :)替换了所有bin文件。

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM