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-without -startup),但它也不起作用,我想这是由于 Blazor WASM 造成的。
先感谢您。