Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何使用customErrors捕获异常?_Asp.net - Fatal编程技术网

Asp.net 如何使用customErrors捕获异常?

Asp.net 如何使用customErrors捕获异常?,asp.net,Asp.net,在web.config中: <customErrors mode="RemoteOnly" defaultRedirect="~/Errors.aspx"> <error statusCode="404" redirect="~/Error.aspx?code=404"/> </customErrors> 在这一行中,visual studio出现错误: System.Web.HttpException未处理 按用户代码 我应该在哪里捕获此

在web.config中:

<customErrors mode="RemoteOnly" defaultRedirect="~/Errors.aspx">
    <error statusCode="404" redirect="~/Error.aspx?code=404"/>     
</customErrors>
在这一行中,visual studio出现错误:

System.Web.HttpException未处理 按用户代码


我应该在哪里捕获此错误?

如果Visual Studio IDE在抛出行中断,则您正在调试模式下运行。在调试模式下,异常会导致执行停止

尝试运行网站(CTRL+F5),而不是调试网站(F5)。但是,请注意,随后您将获得常规的黄色ASP.NET异常页面,因为customErrors标记指定了“RemoteOnly”,这意味着自定义页面将仅显示给远程请求。您的请求不是远程的,因为您在为页面提供服务的机器上

要查看customErrors的操作,请将标记更改为:

<customErrors mode="On" defaultRedirect="~/Errors.aspx"> 
    <error statusCode="404" redirect="~/Error.aspx?code=404"/>      
</customErrors>


并使用CTRL+F5运行您的网站。

这很好。在我接受这个答案之前还有一个问题:是否可以将字符串参数“404 Not Found”传递到重定向页面?不容易。如果这是您的要求,我将绕过customErrors并在global.asax中的Application_Error中编写我自己的异常处理程序。如果我使用Application_Error,我应该禁用customErrors?并在中执行类似于:Response.Redirect(“Error.aspx?code=404&string=bla bla bla”);?两人都同意。禁用CUSOMTERRS并写入重定向。但是,请记住,将对所有异常调用Application\u Error,而不仅仅是您的特定异常。您需要使用HttpContext.Current.Server.GetLastError()来获取异常并确定要执行的代码。
<customErrors mode="On" defaultRedirect="~/Errors.aspx"> 
    <error statusCode="404" redirect="~/Error.aspx?code=404"/>      
</customErrors>