A "direct route" AND "The object has not yet been initialized" errors, WebAPI 一个“直接路线”和“对象尚未初始化”错误,WebAPI

24 浏览
0 Comments

A "direct route" AND "The object has not yet been initialized" errors, WebAPI 一个“直接路线”和“对象尚未初始化”错误,WebAPI

我在Visual Studio 2013上有一个Web Api项目。

突然间,我开始收到这个错误,而没有做任何更改:

直接路由不能使用参数'controller'。请在此参数的位置上指定一个字面路径,以创建到控制器的路由。

> 第12行:protected void Application_Start()
> 第13行:{
> 第14行:GlobalConfiguration.Configure(WebApiConfig.Register);
> 第15行:GlobalConfiguration.Configuration.IncludeErrorDetailPolicy IncludeErrorDetailPolicy.Always;
> 第16行:GlobalConfiguration.Configuration.EnsureInitialized();

当我刷新页面时,我会收到另一个错误:

{ "message": "发生了错误。", "exceptionMessage": "对象尚未初始化。请确保在所有其他初始化代码之后,在应用程序的启动代码中调用HttpConfiguration.EnsureInitialized()。", "exceptionType":

"System.InvalidOperationException", "stackTrace": " at

System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes()\r\n at

System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String

virtualPathRoot, HttpRequestMessage request)\r\n 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 }
        );
    }
}

我的Global.asax.cs:

 protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
        GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
        GlobalConfiguration.Configuration.EnsureInitialized();
    }

这是我的Test Controller上的测试函数:

  public string Get(int id)
    {
        return "value";
    }

请指导,任何帮助将不胜感激。

0
0 Comments

使用Visual Studio 2013开发时,遇到了"A 'direct route' AND 'The object has not yet been initialized' errors, WebAPI"的问题。经过长时间的搜索,未能找到解决方法。最后,我决定重新从头开始创建项目,这解决了问题。可以推测,这是Visual Studio 2013中的某种bug导致的。

0
0 Comments

在使用WebAPI时,有些开发者可能会遇到"A 'direct route' AND 'The object has not yet been initialized' errors"这个错误。下面是一个解决这个问题的方法:

首先,注释掉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";
    }
}

接下来,可以通过以下方式调用API:

http://myapiurl/api/test/1

或者将routeTemplate设置为:

routeTemplate: "api/{controller}/{id}"

在处理WebAPI的路由时,有很多方法可以实现相同的功能,但我更喜欢使用属性约定,尤其是在故障排除时。明确路由可以帮助我找出许多问题,特别是当控制器变得很大时。

可能是有些改动导致了这些错误的出现。通过搜索错误信息,我发现可能由于多种问题导致,你可能需要逐个排除这些问题:[stackoverflow.com/questions/19969228/...](http://stackoverflow.com/questions/19969228)

你是对的,我尝试了所有我找到的解决方法,但都没有帮助!

最后,我重新创建了项目...问题解决了!

嗯,典型的VS。你应该回答自己的问题,并详细说明你做了什么,并将其标记为正确 🙂

0