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

これは完璧な解決策ではありませんが、回避策です -

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 に答える