我試圖讓我的404s正常工作,但無法弄清楚如何得到它非常正確。返回404頁面無重定向
最初我把我在我的Statup配置方法如下:
app.UseMvc(routes =>
{
// routing here
});
app.Use((context, next) =>
{
context.Response.StatusCode = 404;
return next();
});
app.UseStatusCodePagesWithRedirects("/error/{0}");
哪個重定向到一個頁面,在這裏我發現了錯誤。但狀態代碼是302 > 200
。我設置/error/{code}
行動返回相關的狀態代碼,所以現在我有302 > 404
其中(由於302重定向),使它看起來好像/error/404
頁面不存在(它的確如此)。
我想要做的是返回沒有重定向的錯誤頁面,以便嘗試請求/doesntexist
將返回404並顯示錯誤頁面。
我嘗試的另一件事是使用app.UseStatusCodePagesWithReExecute("/error/{0}");
這確實返回404不改變URL,但只顯示一個空白頁,而不是我的錯誤頁面
像你所添加的中間件以相反的順序管線。 MVC應該始終是最後一個,因爲它是一個「終端」中間件,這意味着一個請求永遠不會通過它。 – khellang
未處理的請求(與MVC中的任何給定路由不匹配)肯定會直通。如果它是終端,那麼它不會被重定向到'/ error'動作 –
是的,你是對的。它*通過未處理的路由:https://github.com/aspnet/Routing/blob/02c92c6f929f1241683a3bb8bad027237f2f679c/src/Microsoft.AspNetCore.Routing/RouterMiddleware.cs#L39。你的中間件的順序仍然不正確。 UseStatusCodePages MW應該總是在UseMvc MW之前。 – khellang