私はRoutePrefixを使用しようとしていますが、ASP.NETは部分的に無視しています。以下のコントローラを考える(メソッドの本体とクラスフィールドが削除):ASP.Net Web API RoutePrefixが部分的に無視される
[RoutePrefix("api/users/sharepoint")]
public class SharePointController : ApiController
{
public SharePointController(ISharePointUserRepository repo, IAzureUserRepository otherRepo)
{
}
[HttpGet]
public ExternalUser Get(int id)
{
}
[HttpGet]
public ExternalUser Get(Guid guid)
{
}
[HttpGet]
public IEnumerable<ExternalUser> Get()
{
}
[HttpGet]
public ExternalUser Get(string username)
{
}
[HttpGet]
public IEnumerable<ExternalUser> GetByPersonalEmail(string email)
{
}
[HttpGet]
[Route("GetWithDifferences")]
public IEnumerable<ExternalUser> GetWithDifferences()
{
}
[HttpGet]
[Route("GetUnique")]
public IEnumerable<ExternalUser> GetUnique()
{
}
[HttpPost]
[Route("search")]
public IEnumerable<ExternalUser> Search([FromBody] ExternalUserSearchModel model)
{
}
I取得(ホスト/ヘルプを経由して)以下のAPI:
のSharePoint
GET APIを/ユーザ/共有ポイント/ GetWithDifferences
GET API /ユーザ/共有ポイント/ GetUnique
POST API /ユーザ/共有ポイント/検索
GETのAPI/SharePointの/ {ID}
どの、GET API/SharePointの?GUID = {GUID}
GETのAPI/SharePointの
GETのAPI/SharePointの?ユーザ名= {ユーザー名}
GETのAPI/SharePointの?メール= {メール}
テストされ、広告されたとおりに動作します。
公開されているメソッドに対して[ルート(..)]を指定しないと、RoutePrefixは無視されます。しかし、私はGETでデフォルトのアクションが必要なので、これらのルーティングを追加指定したくありません。
[Route(..)]を使用して、デフォルトのGETおよびPOST動作をどのように維持できますか?