Кажется, что мое пользовательское промежуточное ПО вызывает конфликт с моей страницей на сервере. Пример промежуточного программного обеспечения вкратце проверяет состояние bool и, если true, перенаправляет на страницу счетчика, предоставленную шаблоном блэйзера «из коробки». Без промежуточного программного обеспечения, вставленного в конвейер, страница счетчика прекрасно работает, когда вы нажимаете кнопку, но как только промежуточное программное обеспечение помещается в конвейер, кнопка больше не работает, так как не увеличивает счетчик. Я поместил пользовательское промежуточное программное обеспечение прямо перед промежуточным программным обеспечением app. UseEndpoints, хотя кажется, что не имеет значения, где оно находится, поскольку оно не работает, независимо от того, в каком порядке оно находится. Почему мое пользовательское промежуточное программное обеспечение нарушает работу сервера Blazor? со стороны работает нормально?
middleware:
class CheckMaintenanceStatusMiddleware
{
private readonly RequestDelegate _next;
public CheckMaintenanceStatusMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
var statusCheck = true;
if(statusCheck && context.Request.Path.Value != "/counter")
{
context.Response.Redirect("/counter");
}
else
{
await _next.Invoke(context);
}
}
}
public static class CheckMaintenanceStatusMiddlewareExtension
{
public static IApplicationBuilder UseCheckMaintenanceStatus(this IApplicationBuilder builder)
{
return builder.UseMiddleware<CheckMaintenanceStatusMiddleware>();
}
}
метод настройки в файле запуска:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var connectionString = Configuration.GetConnectionString("DefaultConnection");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseCheckMaintenanceStatus();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
}