【发布时间】:2016-05-31 17:01:13
【问题描述】:
我正在尝试使用 RoutePrefix,但 ASP.NET 部分忽略了它。给定以下控制器(方法体和类字段已删除):
[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)
{
}
我得到以下 API(通过主机/帮助):
共享点
获取 api/users/sharepoint/GetWithDifferences
获取 api/users/sharepoint/GetUnique
POST api/用户/共享点/搜索
获取 api/SharePoint/{id}
获取 api/SharePoint?guid={guid}
获取 api/SharePoint
GET api/SharePoint?username={用户名}
GET api/SharePoint?email={email}
经过测试,效果与宣传的一样。
如您所见,当我没有为公开的方法指定 [Route(..)] 时,RoutePrefix 将被忽略。但是我想要 GET 上的默认操作,所以我不想为这些指定任何额外的路由。
如何强制使用 RoutePrefix,或者,如何使用 [Route(..)] 维护默认的 GET 和 POST 行为?
【问题讨论】:
标签: c# asp.net c#-4.0 asp.net-web-api asp.net-mvc-routing