0

我正在尝试ELMAH with MVC4为 MVC 使用和配置 NUGET 包。

它处理我的代码中发生的所有异常并将其记录到 SQL Server。

使用 Ajax 错误函数也在处理 AJAX 异常(500)错误。一切正常并重定向错误页面overriding OnException in Filter Config

但是,如果用户更改了 URL,并且如果控制器不存在,则会出现错误并且不会重定向到错误页面。

前任:

sitename/test -- Correct URL

sitename/tst ---- Getting Server Error instead redirecting to Error page

使用 ELMAH 处理 404 并重定向到 MVC 中友好的 404 页面的正确方法是什么。

我尝试更改,Custom Error with 404 in web.config但没有按预期工作。

默认情况下,除 404 之外的所有错误都将重定向到错误页面

我试图重定向到友好的 404 页面而不是服务器错误页面。

任何有用的链接或代码都会有所帮助。谢谢

============================================

更新 web.config

<customErrors mode="On">
<error statusCode="500" redirect="/Views/Shared/Error.cshtml"/>
<error statusCode="404" redirect="/Views/Shared/ErrorNotFound.cshtml"/>
</customErrors>
4

1 回答 1

2

在 ASP.NET MVC 中,您的 URL 不代表您正在显示的视图。它是控制器动作。您无法导航到视图。

例如,url ~/Home/Index 不指向Views/Home/Index.cshtml. 它指向的Index方法Controllers/HomeController。然后此方法呈现Index.cshtml视图并返回结果。

所以首先,你需要创建一个ErrorController. 然后,您需要将错误视图移动到匹配的Error文件夹中。现在为您的 和添加操作方法,Error并让它们返回正确的视图。ErrorNotFoundErrorController

最后,将您的 web.config 重定向 URL 更改为~/Error/ErrorNotFound.

使用此方法,您可能希望更改控制器动作的名称,以及它们各自的视图以删除重复的工作Error

于 2013-08-05T16:56:29.893 回答