Как я могу отправить `HttpRequestMessage` из Blazor Wasm на стороне клиента на сервер? - PullRequest
0 голосов
/ 19 июня 2020

У меня есть проект Blazor WebAssembly ASP. NET Core со структурой проекта: клиент, сервер и общий доступ. Я хочу создать класс преобразователя, который будет получать HttpRequestMessage от контроллера. Я хочу использовать несколько баз данных во время выполнения. Поэтому я создаю этот преобразователь, который будет создавать следующий экземпляр DbContext следующим образом:

my startup.cs:

        public void ConfigureServices(IServiceCollection services)
        {
            ...
            //****** CHANGE DBCONTEXT WHEN HTTPRESPONSEMESSSAGE IS "TEST" HERE ******//
            services
                .AddDbContext<SQLServerDbContext>(options =>
                    options.UseSqlServer(_configuration["ConnectionStrings:SQLServerConnection"]))
                .AddDbContext<SQLiteTestDbContext>(options =>
                    options.UseSqlite(_configuration["ConnectionStrings:SQLiteTestConnection"]))
                .AddScoped<DbContextResolver>()
                .AddScoped<IDbContext>(p =>
                {
                    var resolver = p.GetRequiredService<DbContextResolver>();
                    if (!resolver.IsTest)
                    {
                        return p.GetRequiredService<SQLiteTestDbContext>();  // <--- use this DbContext when DbContextResolver.IsTest = true.
                    }
                    return p.GetRequiredService<SQLServerDbContext>();   // <--- use this DbContext when DbContextResolver.IsTest = false.
                });
            ...
         }

Мой класс DbContextResolver имеет только одно publi c porperty: public bool IsTest { get; set; } Я также создал эту промежуточную функцию, которая получит HttpRequestMessage и обратную ссылку на инициализацию DbContext.

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.Use((context, next) =>
            {
                var resolver = context.RequestServices.GetRequiredService<DbContextResolver>();
                resolver.IsTest = context.Request.Query.ContainsKey("test"); // <--- Getting the HttpResponseMessage and setting therefore the resolver property.
                return next();
            });
            ... 
        }

Весь код здесь находится в приложении на стороне сервера. Я все еще новичок в ASP. NET Core и Blazor WebAssembly и не знаю, как получить сообщение от клиентского приложения.

...