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

前端之家收集整理的这篇文章主要介绍了asp.net – 在Web API中获取匹配的路由名称前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的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”]

猜你在找的asp.Net相关文章