我一直在努力解决我的路由问题,经过几天尝试谷歌解决方案但没有运气,我希望有人能够对我的问题有所了解。
我的 WebApiConfig 中有以下路由:
config.Routes.MapHttpRoute(
name: "AccountStuffId",
routeTemplate: "api/Account/{action}/{Id}",
defaults: new { controller = "Account", Id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "AccountStuffAlias",
routeTemplate: "api/Account/{action}/{Alias}",
defaults: new { controller = "Account", Alias = RouteParameter.Optional }
);
和以下控制器方法:
[HttpGet]
public Account GetAccountById(string Id)
{
return null;
}
[HttpGet]
public Account GetAccountByAlias(string alias)
{
return null;
}
如果我打电话:
/API/Account/GetAccountById/stuff
那么它会正确调用GetAccountById
.
但如果我打电话/API/Account/GetAccountByAlias/stuff
,那么什么也不会发生。
显然,这里的顺序很重要,因为如果我在我的 WebApiConfig 中切换我的路由声明,然后/API/Account/GetAccountByAlias/stuff
正确调用GetAccountByAlias
,并且/API/Account/GetAccountById/stuff
什么都不做。
这两个[HttpGet]
装饰是我在 Google 上找到的一部分,但它们似乎无法解决问题。
有什么想法吗?我在做任何明显错误的事情吗?
编辑:
当路由失败时,页面显示如下:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:6221/API/Account/GetAccountByAlias/stuff'.
</Message>
<MessageDetail>
No action was found on the controller 'Account' that matches the request.
</MessageDetail>
</Error>