[英]in ASP.NET Core, is there any way to set up middleware from Program.cs?
我正在為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 =>
{
});
}
讓我能夠在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);
};
}
}
始終確保調用next(app)
或不配置任何其他中間件。
現在在ConfigureServices
方法中將啟動過濾器注冊為IStartupFilter
的單例實現:
services.AddSingleton<IStartupFilter, MyStartupFilter>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.