ignoriert Ich versuche RoutePrefix zu verwenden, aber ASP.NET ignoriert es teilweise. In Anbetracht der folgenden Controller (Methodenrümpfe und Klassenfelder entfernt):ASP.Net Web API RoutePrefix teilweise
[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)
{
}
Ich erhalte die folgende API (über Host/help):
Sharepoint
GET api/users/Sharepoint/GetWithDifferences
GET api/users/Sharepoint/GetUnique
POST api/users/Sharepoint/search
GET api/Sharepoint/{id}
api/Sharepoint GET? Guid = {guid}
GET api/Sharepoint
GET api/Sharepoint? Username = {username}
GET api/Sharepoint? Email = {email}
die, wenn sie getestet, funktioniert wie angekündigt.
Wie Sie die RoutePrefix sehen ignoriert, wenn ich nicht ein [Weg (..)] für die exponierten Methoden angeben. Allerdings möchte ich Aktionen auf GET Standard, so dass ich möchte keine zusätzliche Routing für diese angeben.
Wie kann ich die RoutePrefix erzwingen, oder alternativ, wie kann ich pflegen Standard GET und POST-Verhalten mit [Routen (..)]?