自定义错误页面不显示即使我设置CustomError =“开” [英] Custom Error Page does not show even though I set CustomError="On"

查看:398
本文介绍了自定义错误页面不显示即使我设置CustomError =“开”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Visual Studio 2012与MVC 4框架,并希望看到共享文件夹的友好错误页面,如果未处理的异常。 (我知道,作为一个develepor我需要看到错误的详细信息,但我只是想测试这个设置))
到目前为止,我知道在web.config的system.web部分添加以下代码应该做的伎俩

 < customErrors mode =On/> 

不幸的是,我的友好的错误页面是这样的:







运行时错误说明:
服务器上发生应用程序错误。此应用程序的当前自定义错误设置阻止
查看应用程序错误的详细信息。



详细信息:要在本地服务器机器上查看此特定错误消息的详细信息为
,请在 web.config配置文件位于当前Web应用程序的根
目录中。该标签
应该将其mode属性设置为RemoteOnly。要启用
,请在远程计算机上查看详细信息,请将mode设置为
Off。




 <! -  Web.Config配置文件 - > 

< configuration>
< system.web>
< customErrors mode =RemoteOnly/>
< /system.web> < /结构>




注意:您所看到的当前错误页面可以替换为
自定义错误页面通过修改
应用程序的配置标签的defaultRedirect属性指向一个自定义的
错误页面URL。




 <! -  Web.Config配置文件 - > 

< configuration>
< system.web>
< customErrors mode =OndefaultRedirect =mycustompage.htm/>
< /system.web> < /结构>




我会喜欢按照描述进行操作,而不是像在向HomeController添加操作,设置路由或某些东西等一些解决方法。

这个应该起作用的一个参考是:
http://pluralsight.com/training/players/PSODPlayer?author= scott-allen& name = mvc3-building-controllers& mode = live& clip = 0& course = aspdotnet-mvc3-intro

(左边选择动作过滤器一章和




更新(链接已更改):



更新:



通过创建一个新的项目,这应该和做的工作。我怀疑你的 Error.cshtml 文件可能没有模型作为 @model System.Web.Mvc.HandleErrorInfo 或你可能在不同的视图文件夹中有多个Error.cshtml页面。


I am using Visual Studio 2012 with the MVC 4 Framework and would like to see the friendly error page of the shared folder, if an exception is unhandled. (I know, as a develepor I need to see the error details but I just wanted to test this setting)
So far I know that adding the following code in the system.web section of web.config should do the trick

<customErrors mode="On" />

Unfortunately instead of my friendly error page I get this:

Server Error in '/' Application.

Runtime Error Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.

Details: To enable the details of this specific error message to be viewable on the local server machine, please create a tag within a "web.config" configuration file located in the root directory of the current web application. This tag should then have its "mode" attribute set to "RemoteOnly". To enable the details to be viewable on remote machines, please set "mode" to "Off".

 <!-- Web.Config Configuration File -->

 <configuration>
     <system.web>
         <customErrors mode="RemoteOnly"/>
     </system.web> </configuration> 

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's configuration tag to point to a custom error page URL.

 <!-- Web.Config Configuration File -->

 <configuration>
     <system.web>
         <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
     </system.web> </configuration>


I would like to do it as described and not with a workaround like adding an action to HomeController, setting routes or something.
A reference that this should work is the following:
http://pluralsight.com/training/players/PSODPlayer?author=scott-allen&name=mvc3-building-controllers&mode=live&clip=0&course=aspdotnet-mvc3-intro
(On left select the chapter "Action Filters" and skip to minute 3:30)


UPDATE (link changed):
http://pluralsight.com/training/Player?author=scott-allen&name=mvc4-building-m2-controllers&mode=live&clip=0&course=mvc4-building
(On top click on the thin line that states "Controller in ASP.NET MVC 4", then click on "Action Filters" and skip to minute 5:00)

Does anybody have a clue why I cannot see the friendly error page with the setting mentioned above?
Thanks in advance!

解决方案

Here is step by step guide to doing this,

To start with, first set the "customErrors’s" mode property to ‘on’. (This specifies that custom errors are enabled.)

1. Code from Web.config

<system.web>

    <customErrors mode="On"></customErrors>

</system.web>

Below is my controller code, I have specified the HandleError attribute on the controller class. Also to generate an error I am throwing an exception from the Index action.

2. Code from HomeController.cs

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
    throw new Exception("Error Occured !");
    ViewBag.Message = "Welcome to ASP.NET MVC!";

    return View();
    }

    public ActionResult About()
    {
    return View();
    }
}

As you can see in the screenshot below, I have a Error.cshtml view defined inside the Shared folder of the Views folder.

3. Solution Explorer

Note that the Error.cshtml view (shown below) uses a model of ‘System.Web.Mvc.HandleErrorInfo’

4. Code from Error.cshtml

@model System.Web.Mvc.HandleErrorInfo

@{
    ViewBag.Title = "Error";
}

<h2>
    Sorry, an error occurred while processing your request.
</h2>

On running the project, instead of getting the yellow death screen now I get the following output.

Taken from this article

Update :

Try this out by creating a new project, this should and does work. I suspect that your Error.cshtml file may not have model as @model System.Web.Mvc.HandleErrorInfo or you may be having multiple Error.cshtml pages in different view folders.

这篇关于自定义错误页面不显示即使我设置CustomError =“开”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆