Blazor WebAssembly 3.2 Preview использует новый способ запуска программы, которая не использует Startup.cs.
У меня есть специальное промежуточное ПО, которое анализирует запросы перед их обработкой, которые я не могу настроить в этой новой версии .
Упрощенная версия промежуточного программного обеспечения, работающая нормально со старым способом:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
//All the services...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMyMiddleware();
//more config...
}
}
public static class MyMiddlewareExtensions
{
public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<MyMiddleware>();
}
}
public class MyMiddleware
{
private readonly RequestDelegate _next;
public MyMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
if (httpContext.Request.Host.Host.Contains("test"))
Console.Writeline("test");
else
Console.Writeline("prod");
await _next(httpContext);
}
}
В соответствии со спецификациями документа выпуска этой версии (https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-preview-1-release-now-available/) Мне удалось перенастроить все службы DI, но я не могу заставить промежуточное программное обеспечение работать.
Я пытался во многих отношениях, и он не работает, но я не могу Я хочу заполнить вопрос кодом, который не работает, и, кажется, лучше оставить вам этот очень упрощенный код, который хорошо работает с предыдущей версией, чтобы вы могли предлагать изменения оттуда.
Я даже пытался использовать StartupFilter не использовать Startup.cs, как предложено на странице (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-3.1#configure -services-без-запуска ), но он тоже не работает, я думаю, это из-за Blazor WASM.
Заранее спасибо.