我有一个asp.net应用程序。当我打开应用程序时,我得到了一个运行时异常,其描述说:“在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取更多信息。错误以及它在代码“。
中的起源当我得到这种运行时异常时,我想将页面重定向到其他一些aspx页面。我在web.config文件中添加了自定义错误标记:
<customErrors
mode="RemoteOnly"
defaultRedirect="~/Error.aspx" />
但仍然得到运行时错误页面而不是错误页面。
答案 0 :(得分:4)
如您所知,选项包括On,Off和RemoteOnly。
当然,所有这些都是基于Error.aspx而不是抛出自己的异常。如果Error.aspx抛出自己的未处理异常,那么所有的赌注都将关闭 - 您将获得一个默认的ASP.NET异常页面。
答案 1 :(得分:0)
确保您的customErrors模式为On,而不是Off或RemoteOnly。后一个选项似乎是默认选项,但仅在本地发出页面请求时才有效。
答案 2 :(得分:0)
RemoteOnly指定仅向远程客户端显示自定义错误,并且向本地主机显示ASP.NET错误(来自msdn)。
您是否在开发机器上看到了这些错误?如果是这样,那么这是正确的行为,您可以尝试使用customErrors =“off”。
答案 3 :(得分:0)
在我的Global.asax文件中设置Application_Error事件处理程序,我已经实现了错误的服务器传输。现在我想设置一个特定的页面来处理404错误。如何检测404错误并调用特定于404的页面?
这个问题的主要答案涉及检索首先触发事件的异常。为此,我们调用Server.GetLastError():
我们接下来需要做的是确定异常是否是HttpException或其他内容。一旦我们确定它是HttpException,我们就可以访问特定于Http的属性和方法,这些属性和方法将为我们提供我们正在寻找的其他信息。在我们的例子中,我们想要调用GetHttpCode()方法,该方法将返回Http状态代码并将其与数字404进行比较。
void Application_Error(object sender,EventArgs e)
{
Exception ex = Server.GetLastError();
if (ex is HttpException)
{
if (((HttpException)(ex)).GetHttpCode() == 404)
Server.Transfer("~/Error404.aspx");
}
// Code that runs when an unhandled error occurs
Server.Transfer("~/DefaultError.aspx");
}