这是一个随机的,它让我感到困惑。
我刚刚将我的项目更新为 WebAPI 2,因此我可以使用新的属性路由功能。我按照官方网站上的教程进行操作,最后在我的全局文件中得到了这样的配置:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
然后在WebApiConfig
课堂上我像这样设置属性路由:
public static void Register(HttpConfiguration config)
{
config.DependencyResolver = new DependencyResolverFactory();
config.MapHttpAttributeRoutes();
}
然后我想要一个带有路由“api/users/{id}”的操作方法:
[Route("api/users/{id}")]
public UserAccountModel GetUserAccount(string id)
{
return _userAccountService.GetAccountDetails(id);
}
到目前为止,这一切对我来说都很好。但是,当我尝试走这条路线时,我得到了一个例外:
IControllerFactory 'withoomph.Common.Ioc.DependencyControllerFactory' 没有返回名称为 'api' 的控制器。
这DependencyControllerFactory
是我为我的MVC控制器进行依赖注入的地方,所以不确定它为什么会去那里。
奇怪的是,如果我改变路线,让它有一个额外的部分:
[Route("api/users/test/{id}")]
public UserAccountModel GetUserAccount(string id)
{
return _userAccountService.GetAccountDetails(id);
}
有用!我已经在几个不同的控制器中尝试了这个,使用不同的名称,使用 api,不使用 api 等。它总是一样的:如果路由少于 4 个部分,它就不起作用。超过4个,它的工作原理。
有谁知道他在搞什么鬼??!!