Eri*_*k T 8 c# asp.net asp.net-core
我正在为ASP.NET Core网站构建一个支持库.我有一些需要启用的中间件,需要在任何其他中间件之前添加它们,因为它们的功能.
我可以在IWebHostBuilder上创建一个扩展方法来添加服务,同样用于配置日志记录,但我没有看到以编程方式添加中间件的任何方法.有没有办法做到这一点?查看WebHost/WebHostBuilder的源代码没有跳出来.
鉴于第一个评论,我可能不够清楚.我知道如何创建中间件并使用它.我想要做的是确保在框架启动时调用Configure(IApplicationBuilder应用程序)方法时,我的中间件已经到位.以类似的方式在启动之前能够进行ServiceConfiguration甚至创建.所以像一个扩展方法
public static IWebHostBuilder AddPayscaleHostingServices(this IWebHostBuilder webHostBuilder, string serviceName)
{
return webHostBuilder.ConfigureServices(collection =>
{
collection.RegisterPayscaleHostingServices();
}).ConfigureLogging(factory =>
{
});
}
Run Code Online (Sandbox Code Playgroud)
让我能够在webHostBuilder.Build方法之前进行一些设置,但是在IApplicationBuilder上我没有看到任何类似的中间件/任何东西.
谢谢,埃里克
您可以使用启动过滤器来实现此目的.启动过滤器允许您从DI容器中解析的服务配置中间件.
定义启动过滤器很简单:
public class MyStartupFilter : IStartupFilter
{
public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
{
return app =>
{
// Configure middleware
// ...
// Call the next configure method
next(app);
};
}
}
Run Code Online (Sandbox Code Playgroud)
始终确保不会配置呼叫next(app)或任何其他中间件.
现在注册启动过滤器作为一个单独的实施IStartupFilter在你的ConfigureServices方法:
services.AddSingleton<IStartupFilter, MyStartupFilter>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1208 次 |
| 最近记录: |