调用其他中间件的中间件
Middleware that calls other middlewares
我有一些 ASP.NET 核心代码要提取到自定义中间件中。具体实现如下逻辑:当请求某个路径mapPath
时,将请求代理到另一台主机,标识为proxyUrl
。
Startup.cs
中的以下代码可以解决问题:
var proxyUri = new Uri(proxyUrl);
builder.Map(
mapPath,
appMapped =>
{
appMapped.RunProxy(
new ProxyOptions
{
Scheme = proxyUri.Scheme,
Host = proxyUri.Host,
Port = proxyUri.Port.ToString()
});
}
);
嗯,它使用 app.Map()
进行分支,然后使用 Proxy 中间件来代理请求。
(如何)是否可以将此逻辑提取到自定义且可重用的中间件中?或者我不能在这里使用 "real" 中间件?我能做的当然是写一个扩展方法,例如app.UseMapProxy()
并将逻辑 1:1 放在那里,但我只是想知道我是否也可以使用 "real" 中间件 class 来做到这一点。
这种设置最好封装在 IApplicationBuilder 扩展方法中。您不会在现有组件之外添加任何按请求的功能,只是将它们连接在一起。
我有一些 ASP.NET 核心代码要提取到自定义中间件中。具体实现如下逻辑:当请求某个路径mapPath
时,将请求代理到另一台主机,标识为proxyUrl
。
Startup.cs
中的以下代码可以解决问题:
var proxyUri = new Uri(proxyUrl);
builder.Map(
mapPath,
appMapped =>
{
appMapped.RunProxy(
new ProxyOptions
{
Scheme = proxyUri.Scheme,
Host = proxyUri.Host,
Port = proxyUri.Port.ToString()
});
}
);
嗯,它使用 app.Map()
进行分支,然后使用 Proxy 中间件来代理请求。
(如何)是否可以将此逻辑提取到自定义且可重用的中间件中?或者我不能在这里使用 "real" 中间件?我能做的当然是写一个扩展方法,例如app.UseMapProxy()
并将逻辑 1:1 放在那里,但我只是想知道我是否也可以使用 "real" 中间件 class 来做到这一点。
这种设置最好封装在 IApplicationBuilder 扩展方法中。您不会在现有组件之外添加任何按请求的功能,只是将它们连接在一起。