所以我按照以下教程:
他们每个人都描述了一种控制器的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启动模板的新功能 .