【发布时间】:2021-05-19 08:43:48
【问题描述】:
我正在尝试创建一个中间件来处理网址中的国家/地区代码。 我的代码非常适合删除国家代码,因此它被路由到 mvc 管道中的正确端点。
我遇到的问题是我需要根据端点是否具有某个属性来执行一些操作。
我看到HttpContext 有一个方法GetEndpoint,这正是我需要的。
当 countryCode 在 url (mysite.com/us/home/Index) 中时,
GetEndpoint 返回 null。
但如果我在网址 (mysite.com/home/Index) 中输入没有国家代码的网站,则 GetEndpoint 有效。
如何在修改后的请求 url 上使用GetEndpoint() 方法?
HttpContext 上的另一个属性我需要更改吗?
public async Task InvokeAsync(HttpContext httpContext)
{
// mysite.com/us/home/Index
var currentAddress = httpContext.Request.Path;
// mysite.com/home/Index
httpContext.Request.Path = ExtractCountryCodeFromUrl(currentAddress);
var endpoint = httpContext.GetEndpoint(); // null
var hasMyAttribute = endPoint.Metadata.GetMetadata<MyAttribute>();
// Do something...
await next(httpContext);
}
【问题讨论】:
-
用
Request.GetDisplayUrl();怎么样?
标签: c# asp.net-core model-view-controller middleware .net-5