文章内容
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()
评论列表