未找到ELMAH IController工厂 - 重定向到错误页面的正确方法 - MVC

时间:2013-08-05 16:34:19

标签: asp.net-mvc elmah

尝试使用ELMAH with MVC4并使用NUGET Package for MVC进行配置。

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

使用Ajax Error函数处理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>

1 个答案:

答案 0 :(得分:2)

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

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

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

最后,将您的web.config重定向网址更改为ErrorController

使用此方法,您可能希望更改“控制器操作”的名称及其各自的“视图”以删除重复的工作~/Error/ErrorNotFound