【发布时间】:2016-07-17 20:27:48
【问题描述】:
我一直在尝试在 Web API 2.0 中配置基于 Url 的版本控制,但到目前为止它不起作用。
WebApiConfig
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new ostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
控制器
/// <summary>
///
/// </summary>
[RoutePrefix("api/v1/customers")]
[ValidateRequestModel]
public class CustomersController : ApiController
{
....
}
没有 v1 也可以正常工作,但是当我将 v1 添加到上述路由前缀时,IIS 给了我 403 禁止错误(IIS 7.5 详细错误 - 403.18 - 禁止)。您能帮忙提出问题所在吗?
/// <summary>
///
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Route("")]
[HttpPost]
[ResponseType(typeof(CustomerCreateResponseMessage))]
public HttpResponseMessage CreateFolder([FromBody] CustomerCreateRequestMessage request)
{
return Request.CreateResponse<CustomerCreateResponseMessage>(HttpStatusCode.Created, new CustomerCreateResponseMessage { Message = "OK!" });
}
谢谢
【问题讨论】:
-
显示您调用的提供 403 状态代码的操作和网址
-
乍一看,
HostAuthenticationFilter似乎是原因,但如果没有问题中的更多细节,就无法确定 -
@Nkosi ...我刚刚添加了屏幕截图。
-
您没有包含应该调用的操作的代码。
-
好吧,鉴于我没有足够的关于被调用动作的信息,这是我在黑暗中拍摄的。将 [AllowAnonymous] 属性放在您尝试执行的操作上。鉴于路径与路由前缀匹配,我猜它是根操作,这将是您具有 [Route("")] 属性的操作。
标签: asp.net iis asp.net-web-api asp.net-mvc-5 asp.net-web-api2