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