【发布时间】:2013-11-11 12:53:32
【问题描述】:
这是一个随机的,它让我一头雾水。
我刚刚将我的项目更新为 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 'withomph.Common.Ioc.DependencyControllerFactory' 没有返回 名称“api”的控制器。
DependencyControllerFactory 是我为我的 MVC 控制器进行依赖注入的地方,所以不确定它为什么会去那里。
奇怪的是,如果我改变路线,让它有一个额外的部分:
[Route("api/users/test/{id}")]
public UserAccountModel GetUserAccount(string id)
{
return _userAccountService.GetAccountDetails(id);
}
有效!我已经在几个不同的控制器中尝试了这个,使用不同的名称,使用 api,不使用 api 等。它总是一样的:如果路由少于 4 个部分,它就不起作用。任何超过 4 个,它都有效。
有谁知道他在搞什么鬼??!!
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api .net-4.5 attributerouting