【发布时间】:2018-09-07 10:20:08
【问题描述】:
在我的 ASP.net Core 2.0 管道中,我有以下两个配置条目:
app.UseIdentityServer();
app.UseMvc(...);
我不确定其中哪一个会生成 401 响应,因此我添加了一些自定义中间件以查看是否可以在各个阶段拦截它们:
app.Use(async (http, next) =>
{
if (http.Response.StatusCode == StatusCodes.Status401Unauthorized))
{
Console.WriteLine("intercept!");
}
});
如果放置在UseIdentityServer() 之后,此代码将在之后触发,但不会与 401 一起触发,并且如果在 401 场景中放置在 UseMvc() 之后,则根本不会触发。也就是说,UseMvc() 似乎正在结束管道。
由于在一种情况下错误没有发生,而在另一种情况下从未发生过,我该如何拦截这些 401? (并可能重写它们)
我还尝试了围绕管道延续的 try-catch,很早就放置在管道中,但这也没有触发:
app.Use(async (http, next) =>
{
try
{
await next();
}
catch (Exception ex)
{
Console.WriteLine("intercept!");
}
});
关于如何实施拦截有什么想法吗?
【问题讨论】:
标签: c# asp.net-mvc asp.net-core identityserver4