【发布时间】:2018-07-06 10:12:25
【问题描述】:
我正在使用 ASP.NET Core 2.1。我认为静态文件中间件应该在 mvc 中间件之前 - 例如,不需要通过 mvc 运行请求来提供 css 文件。
所以我按以下顺序排列:
app.UseExceptionHandler(/*...*/)
app.UseHsts();
app.UseHttpsRedirection();
app.UseStatusCodePagesWithReExecute(/*...*/);
// and lastly:
app.UseStaticFiles();
app.UseMvc(/*...*/);
但是,当我打开调试级别日志记录时,我注意到如果缺少静态文件,它会运行 Microsoft.AspNetCore.Builder.RouterMiddleware 并显示 Request did not match any routes,然后运行我的 ErrorController 并针对该请求发出 404。
所以:
- 这是管道的正确顺序吗?
- 有没有办法避免这一切,还是有意为之?例如一些“更轻松”的过程来触发 404 而无需经历所有这些?就像可能首先使用静态文件中间件(但不确定这是否明智/安全)?
【问题讨论】:
-
您有没有机会在这里查看官方文档docs.microsoft.com/en-us/aspnet/core/fundamentals/… ?它应该为您的担忧增加一些洞察力。
-
@Nkosi 谢谢,是的,我读到了
-
你有没有试过改变顺序看看会发生什么?
-
@Brad 我想专业地处理这个问题,而不是反复试验。我已经在我的回答中暗示,管道在这么多教程中显示的事实可能是(我猜),因为它是最安全的。我不确定在安全中间件之前放置东西会产生什么后果。获得安全权利很难,所以我在这里向有相关经验的人学习。
标签: c# asp.net-core asp.net-core-2.1