0

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 造成的。

先感谢您。

4

0 回答 0