Заставить сервер использовать конвейеры запросов и принимать вызовы Blazor - PullRequest
0 голосов
/ 07 февраля 2019

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

Проблема:

Как можноя заставляю мой сервер отвечать на 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 -s работать вместе с 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 ]

0 голосов
/ 08 февраля 2019

По-видимому, я заставил middleware -s работать вместе с 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(....)
0 голосов
/ 07 февраля 2019

Попробуйте:

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

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

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