gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:23:22 25 4
gpt4 key购买 nike

在我的 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更多细节。如果您的场景确实需要路由名称,则可以在 data tokens 中保留路由名称。的一条路线。 (请注意,当前属性路由不提供访问数据 token 的方法)

更新 - 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 - 在 Web API 中获取匹配的路由名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19854757/

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