14

現在のスレッドの global.asax に設定したカスタム セキュリティ プリンシパル オブジェクトがありますが、すべて問題なく、通常は問題ありません。

ただし、ページに画像を提供することで動的画像機能を追加しているだけで、その動的画像ページが読み込まれるたびに、global.asax で System.Web.HttpContext.Current.Session が null になり、セキュリティを設定できなくなります。その時点から通常のプリンシパルとカスケードの問題。

通常、セッションは、ユーザーがログインした開始時のセッション中に 1 回だけ global.asax で null になります。その後は、この 1 つの例外を除いて常に使用できます。

動的な画像ページは、ブラウザが元のページで画像タグに遭遇したときに読み込まれます。

これは、ブラウザーが資格情報を送信せずにそのページを要求しているという事実の一部であると推測していますか?

どんな助けでも大歓迎です。

4

4 に答える 4

25

ジョン、

ハンドラーにashxハンドラーを使用していると仮定しています。その場合は、次のように IRequiresSessionState から派生させてください。

public class Images : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{ }

ashx を使用していない場合、動的画像ページの意味を説明できますか?

ジョシュ

于 2008-11-16T02:13:56.120 に答える
8

Global.asax.cs Session_Start() および Session_End() では、「this.Session」を使用する必要があります!! これは、処理中のリクエストがある場合にのみ HttpContext を使用できるためです。これが、HttpContext.Current.Session で NULL を取得している理由です!

Microsoft Web サイトから: 「HttpContext クラス: 個々の HTTP 要求に関するすべての HTTP 固有の情報をカプセル化します。」

しかし、気分を悪くしないでください... 私もこれに落ちました!:)

于 2009-03-29T06:48:14.307 に答える
3

セッションは、ログインしているかどうかとは関係ありません。

セッションにアクセスしたいときにオーバーライドするイベントは何ですか? AcquireRequestState が起動されるまで、セッションは利用できません。

詳細については、http: //msdn.microsoft.com/en-us/library/9ysfzy8h.aspxを参照してください。

于 2008-11-16T01:05:24.573 に答える