加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在Web API中获取匹配的路由名称

发布时间:2020-12-16 04:27:26 所属栏目:asp.Net 来源:网络整理
导读:在我的Web API处理程序中,我需要获取与请求匹配的路由的名称. public class CurrentRequestMessageHandler : DelegatingHandler{ protected override TaskHttpResponseMessage SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) {
在我的Web API处理程序中,我需要获取与请求匹配的路由的名称.
public class CurrentRequestMessageHandler : DelegatingHandler
{
    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
    {
        var route = request.GetRouteData().Route;
        //now what?

        return base.SendAsync(request,cancellationToken);
    }
}

解决方法

目前,无法在Web API中检索路由的路由名称.您可以查看HttpRouteCollection源代码 here以获取更多详细信息.如果您的方案确实需要路由名称,则可以在路由的数据标记中插入路由名称. (请注意,当前属性路由不提供访问数据令牌的方法)

更新 – 2014年6月23日
通过属性路由领域的最新改进(5.2 RC),您可以执行以下操作,将路径名称插入到数据令牌中.

config.MapHttpAttributeRoutes(new CustomDefaultDirectRouteProvider());

public class CustomDefaultDirectRouteProvider : DefaultDirectRouteProvider
{
    public override IReadOnlyList<RouteEntry> GetDirectRoutes(HttpControllerDescriptor controllerDescriptor,IReadOnlyList<HttpActionDescriptor> actionDescriptors,IInlineConstraintResolver constraintResolver)
    {
        IReadOnlyList<RouteEntry> coll = base.GetDirectRoutes(controllerDescriptor,actionDescriptors,constraintResolver);

        foreach(RouteEntry routeEntry in coll)
        {
            if (!string.IsNullOrEmpty(routeEntry.Name))
            {
                routeEntry.Route.DataTokens["Route_Name"] = routeEntry.Name;

            }
        }

        return coll;
    }
}

像这样访问它:reequest.GetRouteData().Route.DataTokens [ “ROUTE_NAME”]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读