在global.asax的Application_Error方法中有一个自定义错误处理程序,当发生错误时,我使用以下代码将用户传输到错误页面:
Server.Transfer("/Error/");但是,没有指定实际的页面名,上面的代码就会出现“执行/Error/的子请求的错误”异常。
因此,如果我使用Server.Transfer("/Error/Default.aspx"),它可以很好地工作,没有问题。
同样,使用Response.Redirect("/Error/")也很好,但是当错误页面显示时,我们希望继续使用Server.Transfer来保留显示在地址栏中的URL,这样用户就可以简单地刷新页面,重新尝试访问原始的违规URL。
如果有人可以评论如何使Server.Transfer方法工作,而不指定实际的aspx页面名,将不胜感激。
非常感谢。
发布于 2010-12-29 11:18:26
Server.Transfer需要一个资源的实际虚拟路径,该路径将提供所需的输出。它不会通过IIS来找出网站的默认文档是什么,所以它不知道"/Error/“是什么意思,除非这是一个实际的文件名。
Response.Redirect之所以有效,是因为它向具有该相对URL ( /Error/ )的浏览器发送“移动”结果,并且当浏览器为/Error/发出新请求时,IIS首先处理它,并应用默认的文档设置。
https://stackoverflow.com/questions/4553566
复制相似问题