正在使用正确的映射路径触发中间件,但是由于某种原因,它们都导致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>();
答案 0 :(得分:1)
新的appBuilder配置也确实需要默认路由,我认为它是隐式的。 我添加了这一行:
appBuilder.UseMvcWithDefaultRoute()
下方
appBuilder.UseMiddleware<SessionMiddleware>();