调用其他中间件的中间件

时间:2016-06-09 12:24:55

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

我有一些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()进行分支,然后使用代理中间件来代理请求。

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

1 个答案:

答案 0 :(得分:1)

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