2016-05-31 78 views
1

我有一个ASP.NET MVC项目*,它是在VS 2013首次推出时创建的。 (另外:如何找出用于现有项目的MVC版本?)。我现在在VS 2015中打开了它,并添加了一个Web API 2控制器。WebApiConfig.Register未运行

静态WebApiConfig类是由VS添加的。但是,Register方法未被调用。结果,我的api路由不被识别。

如何/在哪里可以调用WebApiConfig.Register方法以及必须传递给此方法的参数是什么?


*这是有一个App_Start文件夹BundleConfig.cs,FilterConfig.cs,IdentityConfig.cs,RouteConfig.cs,StartupAuth.cs,WebApiConfig.cs版本。

回答

4

如前所述in this post,你应该使用GlobalConfiguration.Configure,而不是WebApiConfig.Register任何新的(或迁移)的Web API 2项目:

protected void Application_Start() 
{ 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
    //MVC Registrations 
} 

还要确保将项目中的任何NuGet包更新到最新版本。

+0

谢谢。这解决了这个问题。正常的MVC和API路线都很好地工作。 –

+0

适用于Web API 1. Web API 2不适用于此方式。如果您使用Visual Studio 2017创建项目,或者您的Web API项目使用.NET Core 2,那么您可能使用Web API 2,但这不是解决方案。 –

1

在你Global.ascx.cs

using System.Web.Http; 

protected void Application_Start() 
{ 
    //other stuff    
    //update: do not use WebApiConfig.Register(GlobalConfiguration.Configuration) 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
} 

我怎么找到用于现有项目的MVC的版本?

它引用了什么MVC?即什么是System.Web.Mvc组件的版本号,你的web项目将引用

+0

我刚刚在有关项目类型的问题中添加了更多信息。在我的'Application_Start'中,'GlobalConfiguration'不在范围内。我在哪里可以找到这个类或对象? –

+0

加'使用System.Web.Http;' – wal

+0

谢谢。如果我在'RouteConfig.RegisterRoutes'之前放置了'WebApiConfig.Register',那么处于调试模式的浏览器就会自动关闭。如果我颠倒序列,事情似乎是正常的,但/ api/xx仍然会给出404。还有什么可能是错误的? *顺便说一句,我的System.Web.Mvc有一个'运行时版本'v4.0.30319和'版本'的5.2.0.0在Properties中看到。) –