C# A「;“直达路线”;及;对象尚未初始化";错误,WebAPI
我在Visual Studio 2013上有一个Web Api项目。 突然,我开始犯这个错误,没有做任何改变: 直接路由不能使用参数“controller”。指定一个 替代此参数的文字路径,以创建到 控制器C# A「;“直达路线”;及;对象尚未初始化";错误,WebAPI,c#,visual-studio-2013,asp.net-web-api,C#,Visual Studio 2013,Asp.net Web Api,我在Visual Studio 2013上有一个Web Api项目。 突然,我开始犯这个错误,没有做任何改变: 直接路由不能使用参数“controller”。指定一个 替代此参数的文字路径,以创建到 控制器 > Line 12: protected void Application_Start() > Line 13: { > Line 14: GlobalConfiguration.Configure(WebApiConfig.Register);
> 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();
刷新页面时,我收到另一个错误:
{“消息”:“发生了错误”。,“异常消息”:“错误”
对象尚未初始化。请确保
HttpConfiguration.EnsureInitialized()在应用程序的
所有其他初始化代码之后的启动代码。“,“exceptionType”:
“System.InvalidOperationException”、“stackTrace”:“在
System.Web.Http.Routing.RouteCollectionRoute.get\u子例程()\r\n位于
System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(字符串
VirtualPath,HttpRequestMessage请求)\r\n位于
System.Web.Http.WebHost.Routing.HttpWebRoute.GetRoutedData(HttpContextBase
httpContext)“}
这是我的网站配置:
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 }
);
}
}
// 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中删除以下内容:
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 }
);
}
}
// 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://myapirl/api/test/1
我的建议是从您的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 }
);
}
}
// 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://myapirl/api/test/1
在互联网上搜索了很长一段时间没有找到解决方案后,我从头开始重新创建了这个项目,解决了这个问题。
这似乎是Visual Studio 2013中的某种缺陷。在互联网上搜索了很长时间而没有找到解决方案后,我从头开始重新创建了该项目,解决了这个问题。
这似乎是Visual Studio 2013中的某种错误。您的控制器的名称是什么,您用来测试它的路径是什么?我的控制器的名称是:test。这是链接:http://../../.../test/1What 是您的控制器的名称,您用来测试它的路径是什么?我的控制器的名称是:test。这是链接:http://../../.../test/1or 将routeTemplate设置为:
routeTemplate:“api/{controller}/{id}”
对于WebAPI路由,有很多方法可以实现同样的效果,但我更喜欢属性约定,尤其是对于疑难解答,显式使用路由帮助我解决了很多问题,特别是当控制器变大的时候。我想是的,另一方面,我发现到处都有属性让我有些恼火。。。谢谢你的回答,我尝试了你的建议,但是我仍然得到同样的错误。在我出现这些错误之前,一切都运行得很好,我不知道它为什么开始出错……一定是某些东西发生了变化才触发了这些错误。在谷歌上搜索我看到的消息,它可能是由各种问题引起的,我想你只需要排除所有问题:或者将routeTemplate设置为:routeTemplate:
对于WebAPI路由,有很多方法可以实现同样的效果,但我更喜欢属性约定——特别是在故障排除时——明确使用路由有助于我解决很多问题,尤其是当控制器变大时。我想是的,另一方面,我发现到处都有属性让我有些恼火。。。谢谢你的回答,我尝试了你的建议,但是我仍然得到同样的错误。在我出现这些错误之前,一切都运行得很好,我不知道它为什么开始出错……一定是某些东西发生了变化才触发了这些错误。在谷歌上搜索我看到的消息可能是由各种问题引起的,我想你只需排除所有问题: