C# .NET4.0中的Response.Redirect
C# .NET4.0中的Response.Redirect,c#,.net,asp.net,C#,.net,Asp.net,Response.Redirect()将应用程序升级到ASP.NET 4.0时不再工作 Response.Redirect()用于更新面板内部 我们使用的是AjaxToolKit 4.0 它给了我一个错误: 错误:Sys.WebForms.PageRequestManagerParserErrorException:从 无法分析服务器。此错误的常见原因是响应不正确时 通过调用Response.Write()、响应筛选器、HttpModules或服务器跟踪进行修改 启用。 详细信息:在附近解析
Response.Redirect()
将应用程序升级到ASP.NET 4.0时不再工作
用于更新面板内部Response.Redirect()
- 我们使用的是
AjaxToolKit 4.0
尝试传递
True
作为第二个参数,如下所示:
Response.Redirect("http://...", true);
UpdatePanel不支持异步resonse.redirect。你要么完全回发该页面,要么避免使用它
也有同样的问题。。。您需要将AjaxControlToolkit的版本替换为专门为4.0构建的最新版本。这是一个替换,因此它应该会影响其他任何内容。您正试图用异步请求重定向到另一个页面 您可以重载
响应。重定向函数并将其设置为false
Response.Redirect("URL",false);
通过将其设置为false,它将终止当前请求并转到下一个请求
我100%相信它会对你有用。你应该试着这样做:
Response.Redirect("URL", false);
HttpContext.Current.ApplicationInstance.CompleteRequest();
您将被重定向,不会抛出任何错误。我们遇到了相同的问题。通过使用PostBackTrigger控件解决
<Triggers>
<asp:PostBackTrigger ControlID="UploadButton" />
</Triggers>
你必须这样做
string redirectURL=(a proper url goes here)
string script = "window.location='" + redirectURL + "';";
ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
我已经被这个问题憋了整整一天,一直没有进步。
更新面板的内容,如果调用方在updatePanel之外,则为AsyncPostBackTrigger。如果要重定向,可以将其添加为PostBackTrigger。
updatepanel上的这两项功能都使用:
<asp:UpdatePanel ID="myUpdatePanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:LinkButton ID="link" runat="server" OnClick="link_Click"/>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="link" />
</Triggers>
</asp:UpdatePanel>
请记住异步和非异步之间的区别。主要的一点是,我直到很久以前才注意到。这也发生在我们从.Net 3.5迁移到.Net 4.0的一个项目中
该问题仅在启用压缩时发生。我们在Global.asax.cs
文件中有一个定制的响应过滤器,在浏览器支持的情况下对每个响应应用gzip压缩
解决方案是在AJAX(一个更新面板)发出请求时排除添加该过滤器。这很容易区分,因为请求包含X-MicrosoftAjax:Delta=true
头。这可以通过将逻辑包装在if中来实现:
if (Request.Headers["X-MicrosoftAjax"] != "Delta=true")
{
// Compression logic here
}
另请参见:现在我得到了错误:由于错误c00ce514,无法完成操作。
我已替换了dll,但这里出现了相同的错误,您能告诉我我是什么吗missing@mBotros-有趣。。。你能发布你的代码吗?在4.0版本中,我们始终使用最新的AjaxControlToolkit进行异步回发重定向-没问题。我得到,错误:由于错误c00ce514,无法完成操作。
if (Request.Headers["X-MicrosoftAjax"] != "Delta=true")
{
// Compression logic here
}