如何从 ASPNETCORE OData 请求的中间件中获取路由数据?
How to Get Route Data from Middleware for ASPNETCORE OData request?
我有以下中间件 class,它获取当前请求的路由数据。
如果您在值控制器上执行 Get,您将看到 context.GetRouteData() returns 一个不为空的值。我已将 Swagger\Swashbuckle 连接到附加的项目中,以使其更易于演示。
但是,如果您调用博客 OData 控制器 (http://localhost:40946/odata/Blog),context.GetRouteData() returns null。
有谁知道如何从 OData 请求的中间件访问 RouteData?
public class TestMiddleware
{
protected readonly RequestDelegate _next;
public TestMiddleware(RequestDelegate next)
{
this._next = next;
}
public virtual async Task Invoke(HttpContext context)
{
var routeData = context.GetRouteData();
await this._next.Invoke(context);
}
}
看起来 OData 中间件没有将路由信息作为 IRoutingFeature 提供给上下文。 Link to Source Code
不确定根本原因 - 但作为解决方法,您可以使用
var httpRequestFeature = context.Features[typeof(IHttpRequestFeature)] as IHttpRequestFeature;
var path = httpRequestFeature?.Path;
我有以下中间件 class,它获取当前请求的路由数据。
如果您在值控制器上执行 Get,您将看到 context.GetRouteData() returns 一个不为空的值。我已将 Swagger\Swashbuckle 连接到附加的项目中,以使其更易于演示。
但是,如果您调用博客 OData 控制器 (http://localhost:40946/odata/Blog),context.GetRouteData() returns null。
有谁知道如何从 OData 请求的中间件访问 RouteData?
public class TestMiddleware
{
protected readonly RequestDelegate _next;
public TestMiddleware(RequestDelegate next)
{
this._next = next;
}
public virtual async Task Invoke(HttpContext context)
{
var routeData = context.GetRouteData();
await this._next.Invoke(context);
}
}
看起来 OData 中间件没有将路由信息作为 IRoutingFeature 提供给上下文。 Link to Source Code
不确定根本原因 - 但作为解决方法,您可以使用
var httpRequestFeature = context.Features[typeof(IHttpRequestFeature)] as IHttpRequestFeature;
var path = httpRequestFeature?.Path;