【问题标题】:Middleware that calls other middlewares调用其他中间件的中间件
【发布时间】:2016-06-09 12:24:55
【问题描述】:

我有一些 ASP.NET Core 代码要提取到自定义中间件中。具体实现如下逻辑:当请求某条路径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 中间件来代理请求。

(如何)是否可以将此逻辑提取到自定义和可重用的中间件?或者我不能在这里使用“真正的”中间件?我能做的当然是写一个扩展方法,例如app.UseMapProxy() 并将逻辑 1:1 放在那里,但我只是想知道我是否也可以使用“真正的”中间件类来做到这一点。

【问题讨论】:

    标签: asp.net-core asp.net-core-1.0 owin-middleware


    【解决方案1】:

    这种设置最好封装在 IApplicationBuilder 扩展方法中。除了现有组件之外,您不会添加任何针对请求的功能,只是将它们连接在一起。

    【讨论】:

    • 好的,这就是我所说app.UseMapProxy() 方法时的意思——它只是一个扩展。我只是想知道它是否应该是一个“真正的”中间件。感谢您指出这一点。
    • 再问一个问题:我将如何实现一个添加真正的按请求功能的组件,但又想使用其他中间件?将每个请求的内容提取到自定义中间件中,并将其与 IApplicationBuilder 扩展中的其他中间件组合在一起?
    猜你喜欢
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多