3

我有一个在 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" /> 

(都有结束标签)

但这并没有帮助。

有人能想出什么办法让这些工作吗?

4

2 回答 2

0

你有没有尝试过

Response.Redirect(Globals.NavigateURL( PortalSettings.ActiveTab.TabID ), false);
于 2012-10-17T09:47:27.623 回答
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 让您的页面重定向。您可以在通用实用程序类中移动上述方法。

于 2012-10-17T09:58:38.857 回答