所以我按照以下教程:

他们每个人都描述了一种控制器的EnableCors方法,或者你可以通过全局添加 .

我按照其中所有3个步骤中概述的步骤进行了以下操作:在App_Start / WebApiConfig.cs文件中,我输入了以下内容:

public static void Register(HttpConfiguration config)
{
    config.EnableCors();
    config.Routes.MapHttpRoute(
        name: "Default",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { controller = "", action = "Get" }
    );
}

在我的控制器中,我添加了:

[EnableCors(origins: "http://localhost:50247", headers: "*", methods: "*")] 
public class TestController : ApiController
{ ... }

但是当我去运行该程序时,它给了我以下错误:

XMLHttpRequest无法加载http:// localhost:49705 / api / Test / GetTestData . 请求的资源上不存在“Access-Control-Allow-Origin”标头 . 因此不允许来源'http:// localhost:50247'访问 .

但是当我在App_Start / WebApiConfig.cs中添加以下内容以在整个应用程序中创建EnableCors时:

public static void Register(HttpConfiguration config)
{
    // Web API configuration and services
    var cors = new EnableCorsAttribute(
            origins: "*",
            headers: "*",
            methods: "*");
    config.EnableCors(cors);
     // Web API routes
    config.MapHttpAttributeRoutes();
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

有效 . 但是如果在我的api控制器上使我的装饰EnableCors属性无效 .

当我从apicontroller中删除[EnableCors]属性时:

public class TestController : ApiController
{ ... }

它起作用,因为我在全球范围内做了什么 . 为什么会发生这种情况有原因吗?从webapi 5.2.2升级到5.2.3时是否出现错误?

该项目是使用Visual Studio 2013中的asp.net webapi启动模板的新功能 .