使用IIS7的ASP.NET response.redirect

时间:2012-10-17 09:30:08

标签: asp.net ajax response.redirect

我有一个在Windows 2003中的IIS6上运行的站点,以及XP中的开发环境。一切正常。

我被迫在Windows 7中创建一个新的开发环境。

自从使用此功能后,我发现Reponse.Redirect在某些情况下不再有效!

我有以下代码:

Response.Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ));

它在IIS6上运行良好。

它在IIS7.5上的大部分站点中也能正常工作。但是在某些页面中,它不是。

我查看了返回的标头,并且可以看到Request标头中有一个GET响应,它也适用于它应该重定向的正确页面,但它不是!

用于触发此重定向的按钮周围有一个RadAjaxPanel,但是在父控件中。不工作的按钮位于单独的ascx控件中。

我在Web.Config中有以下内容,我从其他类似的帖子中找到了:

<system.webServer>
<modules>
  <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

并且

<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule,  System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  PublicKeyToken=31bf3856ad364e35" /> 

(两者都有结束标签)

但这没有帮助。

任何人都可以考虑尝试让这些工作起作用吗?

2 个答案:

答案 0 :(得分:0)

你试过吗

Response.Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ), false);

答案 1 :(得分:0)

这不是完美的解决方案,而是一种解决方法 -

private void Redirect(string url)
{
    // Define the name and type of the client script on the page.
    String csName = "RedirectScript";
    Type csType = this.GetType();

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(csType, csName))
    {
      StringBuilder csText = new StringBuilder();
      csText.Append("<script type=\"text/javascript\"> ");
      csText.Append("window.location.href = {0} </", url);
      csText.Append("script>");
      cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
    }
}

从页面调用 -

Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ));

这将使用JavaScript让您的页面重定向。 您可以在公共实用程序类中移动上述方法。