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
它给了我一个错误:

错误:Sys.WebForms.PageRequestManagerParserErrorException:从 无法分析服务器。此错误的常见原因是响应不正确时 通过调用Response.Write()、响应筛选器、HttpModules或服务器跟踪进行修改 启用。 详细信息:在附近解析时出错


尝试传递
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
}