C# MVC Web API 5升级以支持CORS
我正在尝试将CORS支持与Web API结合使用,并安装了RC1。我已经浪费了很多时间试图让CORS正常工作。无论如何,我启用了夜间构建,但没有任何效果。我一直遇到以下问题,在网上找不到解决方案。您是否需要2013年VS来使用MVC 5或安装任何新功能C# MVC Web API 5升级以支持CORS,c#,asp.net-mvc,asp.net-web-api,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Web Api,Asp.net Mvc 5,我正在尝试将CORS支持与Web API结合使用,并安装了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, Cultur
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>
使用MVC 5/Web API 2不需要VS 2013。您可以将其用于VS 2012 尝试使用RTM版本,并在升级到MVC5和WebAPI 2时检查以下内容 要在VS 2012中使用MVC 5和Web API 2,您需要安装
希望这有帮助。除了使用ASP.NET CORS Nuget包之外,还有其他方法可以在服务器端启用CORS。您可以手动将CORS头添加到响应中(例如,通过编写自定义代码或使用其他一些代码机制将头添加到响应中),也可以使用以下方法添加头: 使用CORS Nuget包可能是推荐的方法(一旦5.1+版本实际发布),但这不是唯一的方法
我已经使用MVC4和VS2012时代的Web API版本在VS2012中使用了这些替代方法。您只需添加适当的标题即可在单个控制器上启用CORS:
// allow the browser to send cross-origin requests
Response.AppendHeader("Access-Control-Allow-Origin", "http://foo.com");
// optional: allow the browser to send cookies with the request
Response.AppendHeader("Access-Control-Allow-Credentials", "true");
不需要MVC 5或新的软件包。您在这里看过吗:?是的,这就是我最初走上这条道路的原因。您无法安装该特定软件包,因为它在使用basic auth发出选项飞行前请求时失败。它本应该在夜间构建中修复,但是当升级到夜间构建时,其他一切似乎都会中断,因此我的帖子。无论如何,谢谢。我在Visual Studio 2013中看到了同样的问题,但是在尝试使用System.Web.Mvc项目时。在我的例子中,它警告“强名称验证失败”