在App_Start中缺少WebApiConfig.cs。我可以使用Startup.cs吗?

时间:2016-04-13 18:12:46

标签: asp.net cors asp.net-web-api2

我有一个ASP.NET Web Api v2 Web应用程序,我正在尝试启用CORS,因此我可以从另一台服务器上的客户端调用API。

我正在关注位于here的教程,并讨论如何将以下代码行添加到WebApiConfig.cs文件夹中的App_Start文件中...

var cors = new EnableCorsAttribute("http://localhost:5901", "*", "*");
config.EnableCors(cors);

问题是我在App_Start目录中没有WebApiConfig.cs。我在Web应用程序根目录的Startup.cs文件中完成了大部分配置和路由。我不记得曾经使用WebApiConfig.cs文件。我可以将此代码添加到Startup.cs吗?

1 个答案:

答案 0 :(得分:5)

你的问题的答案很简单:是的,你可以。

唯一重要的是,您将设置应用于同一个HttpConfiguration实例,然后传递给app.UseWebApi()扩展方法。

WebApiConfig.cs只是由默认Web API模板创建的样板文件,用于将Web API配置与其他配置文件分开。如果你打算只使用Owin,那么你可以忽略它。

[编辑]示例代码,位于Startup.cs Configuration方法内:

var config = new HttpConfiguration();
var cors = new EnableCorsAttribute("http://localhost:5901", "*", "*");
config.EnableCors(cors);
app.UseWebApi(config);

回复评论,如果您使用app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);,那么您将在更高级别设置CORS标题,然后再使用Web API,您根本不需要使用EnableCorsAttribute。您的情况的主要区别在于,使用CorsAttribute,您将在CORS标头上进行精细评级配置(例如,您可以为每个Action方法设置不同的CORS标头)。

请记住将app.UseCors放在Configuration方法中的任何其他Owin中间件之前。