c# - MVC Web API 5 升级以支持 CORS

标签 c# asp.net-mvc asp.net-web-api asp.net-mvc-5

我正在尝试通过 Web API 使用 CORS 支持,并且已经安装了 RC1。我浪费了太多时间试图让 CORS 正常工作。无论如何,我启用了夜间构建但无济于事。我不断收到以下问题,无法在网上的任何地方找到解决方案。您是否需要 2013 VS 才能玩 MVC 5 或安装任何新的东西?

Could not load type 'System.Web.Http.Hosting.IHostPrincipalService' from assembly 'System.Web.Http, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

这是我的包文件

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
  <package id="AutoMapper" version="3.0.0-ci1043" targetFramework="net45" />
  <package id="AutoMapper" version="3.0.0" targetFramework="net45" />
  <package id="EntityFramework" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.Cors" version="5.1.0-alpha1-131016" targetFramework="net45" />
  <package id="Microsoft.AspNet.Mvc" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Providers.Core" version="1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Providers.LocalDB" version="1.1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Razor" version="3.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.1.0-alpha1-131016" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.1.0-alpha1-131016" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.Cors" version="5.1.0-alpha1-131016" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.OData" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.AspNet.WebPages" version="3.0.0-rc1" targetFramework="net45" />
  <package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />
  <package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
  <package id="NodaTime" version="1.1.1" targetFramework="net45" />
  <package id="System.Spatial" version="5.6.0" targetFramework="net45" />
  <package id="WebGrease" version="1.1.0" targetFramework="net45" />
  <package id="WebGrease" version="1.5.2" targetFramework="net45" />
</packages>

最佳答案

除了使用 ASP.NET CORS Nuget 包之外,还有其他方法可以在服务器端启用 CORS。您可以手动将 CORS header 添加到响应中(例如,通过编写自定义 Web API MessageHandler ,或使用其他代码机制将 header 添加到响应中),或者您可以使用 web.config 添加 header 。 :

使用 CORS Nuget 包可能是推荐的方法(一旦 5.1+ 版本实际发布),但这不是唯一的方法。

我已经使用 MVC4 和 VS2012-era Web API 版本在 VS2012 中使用这些替代方法。

关于c# - MVC Web API 5 升级以支持 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426362/

相关文章:

asp.net-mvc - Ninject + ASP.net MVC + Entity Framework - 我的上下文何时处理?

json - 如何与 Telegram API 交互

c# - 阅读HttpContent的前n个字符

c# - 为什么无法在即时窗口中评估 lambda?

asp.net-mvc - 如何实现自定义 RoleProvider?

c# - 我的网络应用程序应该有多大的弹性?

c# - 如何在 ASP.NET 中使用 Web 应用程序实现两阶段提交?

javascript - 如何发送TCP保持事件数据包

c# - 对具有不同参数的相同方法调用的最小起订量期望

c# - 为什么会发生 CLR 异常 FatalExecutionEngineError?