Global.asax中的Server.Transfer

May*_*aya 9 .net c# asp.net server.transfer global-asax

我在global.asax的Application_Error方法中有一个自定义错误处理程序,当发生错误时我使用以下代码将用户转移到错误页面:

Server.Transfer("/Error/");
Run Code Online (Sandbox Code Playgroud)

但是,如果没有指定实际的页面名称,则上面的代码会出现" 执行/ Error /的子请求错误 "异常.

因此,如果我使用Server.Transfer("/Error/Default.aspx")它工作正常没有问题.

同样使用也可以Response.Redirect("/Error/")正常工作,但是我们希望继续使用Server.Transfer在显示错误页面时保留地址栏中显示的URL,这样用户只需刷新页面即可重试访问原始违规URL.

如果有人可以评论如何使Server.Transfer方法工作而不指定实际的aspx页面名称,将不胜感激.

非常感谢.

And*_*ber 14

Server.Transfer需要实际的虚拟路径到资源,这将提供所需的输出.它没有通过IIS来查找网站的默认文档是什么,所以它不知道"/错误/"是什么意思,除非这是一个实际的文件名.

Response.Redirect 之所以有效,是因为它将"移动"结果发送到具有相对URL(/ Error /)的浏览器,当浏览器发出/ Error /的新请求时,IIS首先处理它,并应用默认文档设置.