如何正確處理ASP.NETMVC中的404?我用的是RC2使用URL路由:routes.MapRoute(
"Error",
"{*url}",
new { controller = "Errors", action = "NotFound" } // 404s);上面似乎處理了類(lèi)似這樣的請(qǐng)求(假設(shè)初始MVC項(xiàng)目設(shè)置默認(rèn)路由表):“/blah/blah”在控制器本身中重寫(xiě)HandleUnKnownAction():// 404s - handle here (bad action requestedprotected override void HandleUnknownAction(string actionName) {
ViewData["actionName"] = actionName;
View("NotFound").ExecuteResult(this.ControllerContext);}但是,前面的策略不處理對(duì)不良/未知控制器的請(qǐng)求。例如,我沒(méi)有“/IDoNotExist”,如果我請(qǐng)求它,我將從Web服務(wù)器獲得通用404頁(yè),如果我使用路由+覆蓋,則不會(huì)得到我的404頁(yè)。最后,我的問(wèn)題是:是否有任何方法可以使用MVC框架本身中的路由或其他方法來(lái)捕獲這種類(lèi)型的請(qǐng)求?或者我應(yīng)該默認(rèn)使用Web.Config自定義Error作為404處理程序,而忘記這一切嗎?我認(rèn)為,如果使用CustomError,由于Web.Config對(duì)直接訪問(wèn)的限制,我必須將通用404頁(yè)存儲(chǔ)在/view之外。
3 回答

守著星空守著你
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
HandleUnknownAction
web.config
<system.webServer> <httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404" /> <error statusCode="404" responseMode="ExecuteURL" path="/Error/PageNotFound" /> </httpErrors></system.webServer>
錯(cuò)誤控制器
public class ErrorController : Controller{ public ActionResult PageNotFound() { Response.StatusCode = 404; return View(); }}
樣本工程
- 3 回答
- 0 關(guān)注
- 1659 瀏覽
添加回答
舉報(bào)
0/150
提交
取消