Использование промежуточного программного обеспечения в Blazor WebAssembly 3.2 Preview - PullRequest
0 голосов
/ 01 апреля 2020

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.

Заранее спасибо.

...