在ASP.NET 5&amp ;;中启用跨源请求(CORS)。 MVC 6

时间:2015-08-06 08:50:08

标签: c# asp.net-web-api cors

我正在尝试在我的MVC 6 WebApi项目中启用CORS,我发现了这个问题,重点关注同样的问题: How do you enable cross-origin requests (CORS) in ASP.NET 5 & MVC 6?

它看起来与我想做的完全一样,但当我到达这一部分时,我遇到了麻烦。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    //Add Cors support to the service
    services.AddCors();

    var policy = new Microsoft.AspNet.Cors.Core.CorsPolicy();

    policy.Headers.Add("*");    
    policy.Methods.Add("*");          
    policy.Origins.Add("*");
    policy.SupportsCredentials = true;

    services.ConfigureCors(x=>x.AddPolicy("mypolicy", policy));
}

public void Configure(IApplicationBuilder app, IHostingEnvironment  env)
{
    // Configure the HTTP request pipeline.

    app.UseStaticFiles();
    //Use the new policy globally
    app.UseCors("mypolicy");
    // Add MVC to the request pipeline.
    app.UseMvc();
}

它(以及我发现的关于此主题的任何其他资源)明确指出我应该在app.UseCors("policyname")文件的Configure方法中使用Startup.cs。 但是当我这样做时,我收到以下错误:

'IApplicationBuilder' does not contain a definition for 'UseCors' and no extension method 'UseCors' accepting a first argument of type 'IApplicationBuilder' could be found (are you missing a using directive or an assembly reference?)

我知道这是MVC 6中的一个全新功能,也许这就解释了为什么我找不到任何关于如何实现它的官方文档。

它可以像添加正确的NuGet包一样简单吗? 我已经尝试了几个与CORS相关的.Net NuGet软件包,但它们没有解决问题,我怀疑它们与旧版WebApi有关。

1 个答案:

答案 0 :(得分:2)

添加

using Microsoft.AspNet.Builder;

并确保在project.json文件中包含该包

Microsoft.AspNet.Cors.Core

这是扩展程序的图像

enter image description here