gpt4 book ai didi

c# - 区域不工作的 WebAPI 2 属性路由

转载 作者:太空狗 更新时间:2023-10-30 01:17:37 25 4
gpt4 key购买 nike

我在使 WEBAPI 2 属性路由正常工作时遇到问题。我正在寻找的路由方案是 /api/{product}/{controller}/{id-optional},所以像 /api/Vision/IdCard。 Controller 位于一个区域中,设置如下:

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 }
);

最佳答案

您需要从 GlobalConfiguration 对象获取 HttpConfiguration 实例,并从 AreaRegistration.cs 的 RegisterArea 方法内部调用 MapHttpAttributeRoutes() 方法。

    public override void RegisterArea(AreaRegistrationContext context) 
{
GlobalConfiguration.Configuration.MapHttpAttributeRoutes();

//... omitted code
}

每个区域都必须这样做。最后,您必须在“WebApiConfig”中删除“config.MapHttpAttributes()”方法,否则您将得到重复的异常。

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();

// Configure Web API to use only bearer token authentication.
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 }
);
}
}

关于c# - 区域不工作的 WebAPI 2 属性路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31008197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com