2009-08-21 12 views
1

私のASP.NET WebアプリケーションはInternet Explorerではうまく動作しますが、FirefoxとChromeではHttpContext.Currentが定義されていて、HttpContext.Current.Sessionがnullの問題があります。エラーはおそらく、セッションオブジェクトがASP.NETページのライフサイクルの早い段階でアクセスされているために発生している可能性があります。しかし、WebサイトはInternet Explorerを使用してアクセスしようとしているので、すぐに受け入れられる修正を見つけることを望んでいます。おそらく、これらの線に沿って何か:nullの場合、HttpContext.Current.Sessionをプログラムで作成できますか?

if (HttpContext.Current.Session == null) 
{ 
    // Create Session - but how? 
} 

そこで質問です:私はASP.NETでプログラムSessionオブジェクトを作成できますか?

編集:このバグは、誤って同期していた.designerファイルに関連していました。奇妙な、しかし今はそれが動作します。

答えて

2

実際に問題があるとは、ASP.NETがセッション識別子を保持するために使用するセッションCookieを受け入れる唯一のブラウザだということです。

どちらのすべてのブラウザがノーであるしかし、あなたがセッションを自分で作成することはできませんクッキーを受け入れるか、あなたの質問にcookieless sessions.

答えを使用するようにASP.NETアプリケーションを設定していることを確認してください。 ASP.NETは、あなたの代わりにこれを行う必要があります。

+0

ありがとうございました。私はこの問題を解決するためにもっと深く掘り下げなければならないと思う。確かに一貫性がなく、Visual Studioの内部Webサーバーを使用している場合にのみ、プロダクションサーバー上では問題にならないと言われています。 –

+3

Webアプリケーション自体のコンテキストでは、コンテキスト/セッションを作成することはできませんが、単体テストに必要な場合は、これを行う方法があります。彼らは醜いですし、可能であればHttpContextBase/HttpSessionStateBaseを嘲笑して使っています。ちょうど、誰かがアプリの代わりに単体テストのコンテキストでこの質問/答えに遭遇した場合に備えて、これを補完すると思っていました。 – tvanfosson

+0

@Jan - Webサーバーを再起動せずにアプリケーションを変更すると、セッションが乱れることがあります。私はしばしば、デバッガで動作しているときにセッションが乱れるのを見ると、実際のWebサーバーを停止します(タスクバーアイコンを右クリックします)。通常、セッション関連のものをすぐに消去します。 – tvanfosson

関連する問題