“直接路由”和“对象尚未初始化”错误,WebAPI
本文关键字:初始化 错误 WebAPI 路由 直接路由 对象 | 更新日期: 2023-09-27 18:37:01
我在Visual Studio 2013上有一个Web Api项目。突然,我开始收到此错误,但没有进行任何更改:
直接路由不能使用参数"控制器"。指定一个 文本路径代替此参数,以创建到 控制器。
> Line 12: protected void Application_Start() > Line 13: { > Line 14: GlobalConfiguration.Configure(WebApiConfig.Register); > Line 15: GlobalConfiguration.Configuration.IncludeErrorDetailPolicy IncludeErrorDetailPolicy.Always; > Line 16: GlobalConfiguration.Configuration.EnsureInitialized();
当我刷新页面时,我收到另一个错误:
{ "消息": "发生错误。", "异常消息": "The 对象尚未初始化。确保 HttpConfiguration.EnsureInitialized() 在应用程序的 所有其他初始化代码之后的启动代码。 "System.InvalidOperationException", "stackTrace": " at System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()''r' at System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request)''r' at System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext)" }
这是我的WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
My Global.asax.cs:
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
GlobalConfiguration.Configuration.EnsureInitialized();
}
这是我在测试控制器上的测试功能:
public string Get(int id)
{
return "value";
}
请告知,任何帮助将不胜感激。
我的建议是从您的WebApiConfig中注释掉以下内容:
// config.Routes.MapHttpRoute(
// name: "DefaultApi",
// routeTemplate: "{controller}/{id}",
// defaults: new { id = RouteParameter.Optional }
//);
然后,确保在控制器上按如下所示设置路由属性:
[RoutePrefix("api/test")]
public class TestController : ApiController
{
[Route("{id}")]
public string Get(int id)
{
return "value";
};
}
然后拨打电话:
http://myapiurl/api/test/1
在互联网上搜索了很长时间没有找到解决方案后,我从头开始重新创建了该项目并解决了问题。这似乎是Visual Studio 2013中的某种错误。