2011-06-25 11 views
1

サイトには、国のDropDownListと言語のDropDownListがあります。 これらの組み合わせをクリックするとen-us.mysite.comのような国/言語固有のURLにリダイレクトされますasp.net:セッションは、response.redirectでクリアされますか?

リダイレクトはユーザーコントロール内のButtonClickで発生します(UserControlは(newdomainの要求で)global.asaxでチェックすると、セッション変数はクリアされます。

これは、「responseend」パラメータのtrueおよびfalseの両方で発生します。レスポンス。リダイレクト機能。

これは仕様です。セッションを追跡クッキーが失われているので、あなたがドメインを横断しているので

(ホストに指定されたサブドメインは、私のマシン上のファイルで、これは、途中でローカルホスト上にある)

答えて

3

セッションは、クリアされます。

はい - これは仕様です。セッションデザインではなく、クッキーデザイン。

しかし、私はあなたのクッキーは、複数のサブドメインの、そのような全体で共有することを可能にすることができると信じて:

Response.Cookies["domain"].Domain = "mysite.com"; 

Making it available to: 

en-us.mysite.com

en-au.mysite.com 
foo.mystie.com 
etc 

しかし、 ASP.NETセッションCookieを制御できないため、問題は解決しません。

あなた自身のカスタムセッションメカニズムを実装する必要があります。これは、まだ行っていないので、実際にはあまり役に立ちません。

+1

ありがとう、ありがとうございました。今私は問題を知っているので、デバッグをやめて新しい解決策を考えてみることができます。 – Michel

+0

は、私のクッキーが保存されていないという別の問題に遭遇しました...今なぜ知っていますか:-) – Michel

1

RPM1984は言ったように、あなたがドメインを超えているためです。ただし、セッション変数を渡して次のリクエストで再度設定する場合は、同じセッションを再開することができます。ただし、2番目のドメインを処理するのと同じアプリケーションであることが前提です。

あなたはOnAuthenticateRequestフックにして、手動で

Request.Cookies.Add(new HttpCookie("ASP.NET_SessionId", Request.Form["s"]);) 

を設定することを行うことができます(私はセッションクッキーが命名された、またはそれが設定可能である場合。それは実際に設定し、少なくとも可能性がどうあるべきか覚えていません何らかの形で)

これは、セッションIDを "s"という変数に書き込むことを前提としていますが、これを解決するためのより良い方法が考えられます。

関連する問題