【发布时间】:2015-09-09 13:43:33
【问题描述】:
我无法让 WEBAPI 2 属性路由正常工作。我正在寻找的路由方案是/api/{product}/{controller}/{id-optional},比如/api/Vision/IdCard。控制器在一个区域中,设置如下:
namespace DataServices.Controllers.Vision
{
[RoutePrefix("api/vision")]
public class IdCardController : BaseApiController
{
[System.Web.Mvc.RequireHttps]
[Route("idcard")]
public IdCardViewModel Get(HttpRequestMessage request)
{...}
每当我执行此操作时,我都会收到 404。我包含了命名空间,因为该区域位于它自己的命名空间中。 WEBAPI 属性路由是否支持区域?
编辑:WebApiConfig 看起来像这样:
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
【问题讨论】:
-
你给
MapHttpAttributeRoutes()打过电话吗? -
是的。添加到原始问题。
-
看到这个 [System.Web.Mvc.RequireHttps],它是针对 MVC 而不是 WebAPI。如果你删除它会发生什么?
-
没有变化。决定离开区域,因为 webapi 2 不支持路由到区域:asp.net/web-api/overview/web-api-routing-and-actions/… - 请参阅 Mike 的第一条评论。
标签: c# rest asp.net-web-api asp.net-mvc-routing asp.net-web-api2