[英]Use netstandard 2.0 middleware into ASP.NET 4.5.2 WebApi
and I use it in an web application.我在創建了一個庫,並在 Web 應用程序中使用它。
app.在我的庫中,我剛剛創建了一個在應用程序中調用的中間件。
在我的 netcoreapp2.0 中,我在 IApplicationBuilder 上創建了一個擴展方法來調用中間件。
public static IApplicationBuilder UseSeriLogLogicalProperties(this IApplicationBuilder applicationBuilder)
{
return applicationBuilder.UseMiddleware<LogicalPropertiesLoggingMiddleware>();
}
然后在我的示例項目(核心)中,我只是在我的 startup.cs 中的 Configure() 部分調用此擴展方法。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
app.UseSeriLogLogicalProperties();
}
.現在我想在另一個示例中調用這個中間件,這次是在。
我怎么能那樣做?
我找到了解決方案。 您可以在您的項目的 AssemblyInfo.cs 中使用 PreApplicationStartMethod,然后您可以訂閱 BeginRequest。
因此,對於您的應用程序的每個請求,您都將傳入該方法,以便您可以執行所需的操作。
首先創建一個將為每個請求調用的類
public class YourModule : IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest += Application_BeginRequest;
}
private void Application_BeginRequest(object source, EventArgs e)
{
var application = (HttpApplication)source;
var context = application.Context;
//your code
}
}
然后創建另一個類將在調用上面的類的 AssemblyInfo.cs 中調用
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
private static bool startWasCalled;
public static void Start()
{
if (startWasCalled)
{
return;
}
startWasCalled = true;
DynamicModuleUtility.RegisterModule(typeof(YourModule));
}
}
然后在 AssemblyInfo.cs
[assembly: PreApplicationStartMethod(typeof(PreApplicationStartCode), "Start")]
因此,當您從控制器調用操作時,您每次都會在 YourModule.Application_BeginRequest() 方法中傳遞,就像核心應用程序中的中間件一樣。
在 net452 WebApi 中測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.