尝试使用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>
答案 0 :(得分:2)
在ASP.NET MVC中,您的URL不代表您正在显示的视图。这是控制器行动。您无法导航到视图。
例如,url~ / Home / Index不指向Views/Home/Index.cshtml
。它指向Index
的{{1}}方法。然后,此方法呈现Controllers/HomeController
视图并返回结果。
首先,您需要创建一个Index.cshtml
。然后,您需要将错误视图移动到匹配的ErrorController
文件夹中。现在,为Error
添加Error
和ErrorNotFound
的操作方法,让他们返回正确的视图。
最后,将您的web.config重定向网址更改为ErrorController
。
使用此方法,您可能希望更改“控制器操作”的名称及其各自的“视图”以删除重复的工作~/Error/ErrorNotFound
。