文章内容
2017/10/1 17:10:41,作 者: 黄兵
ASP.NET MVC API 404错误
最近在写代码的时候,报错,采用ASP.NET MVC API,错误截图如下:
报404,应该是没找到这个地址,看一下WebApiConfig的写法:
public class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
看一下Global.asax文件内容:
protected void Application_Start() { StackExchange.Profiling.EntityFramework6.MiniProfilerEF6.Initialize(); //开启线程扫描队列将数据取出来写到Lucene.NET中。 SearchIndexManager.GetInstance().StartThread(); //移除所有视图引擎 ViewEngines.Engines.Clear(); //添加Razor视图引擎 ViewEngines.Engines.Add(new RazorViewEngine()); //应用程序启动时,自动加载配置log4Net log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config")); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
解决方案:
在Global.asax文件注册WebApi,代码如下:
protected void Application_Start() { StackExchange.Profiling.EntityFramework6.MiniProfilerEF6.Initialize(); //开启线程扫描队列将数据取出来写到Lucene.NET中。 SearchIndexManager.GetInstance().StartThread(); //移除所有视图引擎 ViewEngines.Engines.Clear(); //添加Razor视图引擎 ViewEngines.Engines.Add(new RazorViewEngine()); //应用程序启动时,自动加载配置log4Net log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config")); AreaRegistration.RegisterAllAreas(); // Register API routes WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); }
注意红色的部分,直接注册一下就OK了。但是注册也是有顺序的,下面那种搞错了顺序,也是会出现问题的:
AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); WebApiConfig.Register(GlobalConfiguration.Configuration);
正确的注册方式形如:
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes);
如果加了上面语句之后报如下错误:
请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()
请参考这篇文章:该对象尚未初始化 请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()
参考资料:stackoverflow - All ASP.NET Web API controllers return 404
黄兵的个人博客原创。
转载请注明出处:黄兵的个人博客 - ASP.NET MVC API 404错误
jQuery File Upload Unexpected string at new Function
该对象尚未初始化 请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()
该对象尚未初始化 请确保在所有其他初始化代码后面的应用程序启动代码中调用 HttpConfiguration.EnsureInitialized()
评论列表