私はしばらくの間ルーティングに苦労してきましたが、運が悪いと解決策をグーグルで試した数日後、誰かが私の問題に光を当ててくれることを願っています.
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
何もしないため、ここでは明らかに順序が重要です。
2 つの[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>