.NET 4.0中的Response.Redirect

将应用程序升级到ASP.NET 4.0时, Response.Redirect()不再起作用

  • Response.Redirect()在Update面板中使用
  • 我们使用AjaxToolKit 4.0

它给了我错误:

错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。 此错误的常见原因是通过调用Response.Write(),响应filter,HttpModules或服务器跟踪来修改响应。 详细信息:解析附近时出错

UpdatePanel不支持assese.redirect异步。 您应该完全回发页面或避免使用它。

http://forums.asp.net/t/1539851.aspx/1?Response+Redirect+not+working+on+an+UpdatePanel+if+redirecting+to+a+ClickOnce+application+in+some+cases+

http://forums.asp.net/t/1392827.aspx

如何修复错误:无法解析从服务器收到的消息

你必须这样做

 string redirectURL=(a proper url goes here) string script = "window.location='" + redirectURL + "';"; ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true); 

尝试传递True作为第二个参数,如下所示:

 Response.Redirect("http://...", true); 

有同样的问题……您需要使用专为4.0构建的最新版本替换您的AjaxControlToolkit版本。 这是一个替代品,所以它应该影响其他任何东西。 请参阅codeplex上的Ajaxcontroltoolkit

我们遇到了同样的问题。 通过使用PostBackTrigger控件解决

    

http://msdn.microsoft.com/en-us/library/system.web.ui.postbacktrigger.aspx

你应该尝试这样做:

 Response.Redirect("URL", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); 

您将被重定向,不会抛出任何错误。

我一直在唠叨这个问题整整一天没有前进。 如果调用者在updatePanel之外,则更新面板AsyncPostBackTrigger的内容。 如果要重定向,请将其添加为PostBackTrigger。 updatepanel上的两件事情都使用:

         

我的问题与由于列表视图在自定义控件内以动态生成的控件有关。

解决方案:

ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(myRedirectButton);

在我的情况下,我在项目数据绑定上使用listview,所以我得到了控件使用:

 Control myRedirectButton = ListViewDataItem.GetControl("controlId") 

请记住Async与非Async之间的差异。 这是我直到很远才注意到它的要点。

您正尝试使用异步请求重定向到另一个页面。

您可以重载Response.Redirect函数并将其设置为false。

 Response.Redirect("URL",false); 

通过将其设置为false,它将终止您当前的请求并转到下一个请求。

我百分百肯定它会对你有用。

这也发生在我们从.Net 3.5迁移到.Net 4.0的一个项目中

在启用压缩时才会出现此问题。 我们在Global.asax.cs文件中有一个自定义响应filter,以便在浏览器支持时对每个响应应用gzip压缩。

解决方案是在AJAX(更新面板)发出请求时排除添加该filter。 这很容易区分,因为请求包含X-MicrosoftAjax: Delta=true标头。 这可以通过将逻辑包装在if中来实现:

 if (Request.Headers["X-MicrosoftAjax"] != "Delta=true") { // Compression logic here } 

另见: https : //forums.asp.net/t/1564697.aspx