Я использую 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
со следующими ограничениями:
Использование промежуточных программ перед использованием Blazor
в конвейере запросов
Для пользовательских 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(....)