Промежуточное программное обеспечение запускается с правильным путем сопоставления, но по какой-то причине все они приводят к состоянию NotFound (404) и не переходят к контроллеру.
Если я удаляю промежуточное программное обеспечение, все запросы будут работать как задумано.
Я построил простое промежуточное ПО, которое пока ничего не делает, в моем проекте есть класс промежуточного ПО:
public class SessionMiddleware : IMiddleware
{
private readonly ISessionAPI _sessionAPI;
public SessionMiddleware(ISessionAPI sessionAPI)
{
_sessionAPI = sessionAPI;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
await next(context);
}
}
Вот все промежуточное ПО, использованное в моем проекте в конфигурации запуска:
app.Use(async (context, next) =>
{
AllLanguage lg = AllLanguage.fr_CA;
ClaimsPrincipal cp = context.User;
lg = cp.GetLanguage(context);
CultureInfo.CurrentCulture = new CultureInfo(ResourcesAPI.GetLocaleByAllLanguageEnum(lg));
CultureInfo.CurrentUICulture = new CultureInfo(ResourcesAPI.GetLocaleByAllLanguageEnum(lg));
await next();
});
app.MapWhen(context => context.Request.Path.StartsWithSegments("/api/Quotations") ||
context.Request.Path.StartsWithSegments("/api/Users") ||
context.Request.Path.StartsWithSegments("/api/ESUsersCompanies") ||
context.Request.Path.StartsWithSegments("/api/Fees") ||
context.Request.Path.StartsWithSegments("/api/Products") ||
context.Request.Path.StartsWithSegments("/api/UserSettingAdmins") ||
context.Request.Path.StartsWithSegments("/api/Providers"), appBuilder =>
{
appBuilder.UseMiddleware<SessionMiddleware>();
});
Вот услуга:
services.AddTransient<SessionMiddleware>();