在Response.Redirect中使用endResponse

5 asp.net

在ASP.NET页面中执行response.redirect时,我收到错误:
错误:无法获取
传入的两个变量的值(一个值从查询字符串检索,另一个从viewstate检索)

我从未见过之前的这个错误,所以我做了一些调查,发现建议使用"endResponse"的"False"值,

例如Response.Redirect("mypage.aspx",False)

这个有效.

我的问题是:在response.redirect中对"endResponse"值使用"False"有什么副作用?
即服务器的缓存有什么影响?页面是否在一段时间内保留在内存中?它会影响查看同一页面的不同用户吗?等等

谢谢!

Spo*_*boy 14

从另一个问题和这篇博文中,推荐的模式是 -

Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();
Run Code Online (Sandbox Code Playgroud)

这避免了昂贵的ThreadAbortException/Response.End.一些代码将在执行后执行CompleteRequest(),但ASP.Net会在方便时立即关闭请求.

编辑 - 我认为这个答案给出了最好的概述.请注意,如果使用上述模式,仍将执行重定向后的代码.


Jos*_*osh 4

一篇MSDN 博客文章可能会回答您的问题:

使用 [Response.Redirect(url, false)] 的缺点是页面将继续在服务器上处理并发送到客户端。如果您在 Page_Init (或类似)中进行重定向并调用 Response.Redirect(url, false),则页面只会在当前页面执行完成后才会重定向。这意味着您在该页面上执行的任何服务器端处理都将被执行。