Заставить сервер использовать конвейеры запросов и принимать вызовы Blazor

Я использую browser-hosted Blazor и в моем server проект я хочу использовать дополнительные middleware"S.

Проблема в:

Как я могу заставить мой сервер отвечать обоим Blazor звонки и использовать конвейеры запросов для api звонки?

Код

Запуск сервера

public void Configure(IApplicationBuilder app)
        {

        app.UseBlazor<Client.Startup>();
        app.Map("/apiRoute", x => {
            Console.WriteLine("got here");
        });

PS В следующем коде я могу получить доступ Blazor маршруты, но я не могу получить доступ к apiRoute, Есть ли способ сделать эту работу, учитывая, что я хочу создать конвейеры?

Я разместил pipeline как до, так и после app.UseBlazor безрезультатно. Это просто не получит удар.

Обновить

Видимо я сделал middlewareработает вместе Blazor со следующими ограничениями:

  1. Использование промежуточного программного обеспечения перед использованием Blazor в конвейере запросов

  2. Для пользовательских routes кажется расширение app.Map(route,x=>...) не работает с Blazor поэтому я должен был обернуть его внутри app.Use расширение.

Код

public void Configure(IApplicationBuilder app, IHostingEnvironment env) {

            app.UseDeveloperExceptionPage();


            app.Use(async (con, next) => {
                app.Map("/myCustomRoute", f => {
                    app.Use(async (c, n) => {
                        await con.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("asa"));
                    });
                });
            });
            app.UseBlazor<Client.Startup>();
        }

С помощью приведенного выше кода я могу получить доступ Blazor страницы, а также отправка с Postman запрос по указанному маршруту (в нашем случае myCustomRoute), который получил удар, хотя я до сих пор не получил ответ Postman, Что я до сих пор не понимаю, так это почему я не могу разветвлять свой конвейер (app.Map) и использовать Blazor расширение дальше, так как они разные проблемы.

пример
Почему это не работает:

    app.Map("myroute1",...);
    app.Map("myroute2",...);
    app.UseBlazor(...);

и это работает:

  app.Use(async(x,con)=>{
                  app.Map(route1,...);
                  app.Map(route2....);
               });
  app.UseBlazor(....)

2 ответа

Попробуй это:

Удалить app.Map("/route", (x => { --- }

И измените свой код на что-то вроде этого:

var response = await this.client.PostAsync("/route",
                                   content);

Видимо я сделал middlewareработает вместе Blazor со следующими ограничениями:

  1. Использование промежуточного программного обеспечения перед использованием Blazor в конвейере запросов

  2. Для пользовательских routes кажется расширение app.Map(route,x=>...) не работает с Blazor поэтому я должен был обернуть его внутри app.Use расширение.

Код

 public void Configure(IApplicationBuilder app, IHostingEnvironment env) {

            app.UseDeveloperExceptionPage();


            app.Use(async (con, next) => {
                app.Map("/myCustomRoute", f => {
                    app.Use(async (c, n) => {
                        await con.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("asa"));
                    });
                });
            });
            app.UseBlazor<Client.Startup>();
        }

Приведенный выше код работает, если я получаю доступ Blazor страницы, а также отправка с Postman запрос по указанному маршруту (в нашем случае myCustomRoute). Что я до сих пор не понимаю, так это почему я не могу разветвлять свой конвейер (app.Map) и использовать Blazor расширение дальше, так как они разные проблемы.

пример
Почему это не работает:

app.Map("myroute1",...);
app.Map("myroute2",...);
app.UseBlazor(...);

и это работает:

 app.Use(async(x,con)=>{
              app.Map(route1,...);
              app.Map(route2....);
           });
 app.UseBlazor(....)
Другие вопросы по тегам