2011-01-12 20 views
0

セッション状態に関するASP.NET Webアプリケーションで奇妙な例外が発生しています。注:コードは、サードパーティによって生成された....ASP.NETセッション状態

基本的に私はの説明をHttpException取得しています:

にEnableSessionStateがtrueに設定されている場合、セッション状態は、いずれか一方のみで、使用することができ

を設定ファイルまたはPageディレクティブに記述します。 System.Web.SessionStateModuleまたはカスタムセッション状態モジュールがアプリケーション構成の\\セクションに含まれていることも確認してください。

障害がそうのようなルックスを発生コード:

public class ExtendedWebPage : System.Web.UI.Page 
{ 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     if (Context.Session != null) 
     { 
      if (Session.IsNewSession || Session["UserID"] == null) <--- Errors Here 
      { 

私はしかし、私はその罰金をContext.Session尋問する場合、if文のテストに例外を取得しています。これまでブラウザはLoginページを通過していましたが、Context.Sessionを見ることができるSession変数がいくつか設定されていましたが、Session.Sessionは例外を投げています。

アイデア?

おかげで、

フィリップ

+1

ここでの問題は、Context.SessionとSessionは同じものではないと思います。 –

+0

Sessionは、Page内で定義された仮想プロパティですが、SessionプロパティはContext.Sessionを使用し、基になるフィールド_sessionがnullの場合は例外を返します。 – Philip

+0

実際のエラーメッセージは何ですか? – simon831

答えて

1

あなたはセッションのaspxマークアップで@Pageディレクティブでそのページに対して無効にされていないことを確認しましたか? Further info here

+0

同じことを示唆していましたが、これは前に私を捕まえました。 – Burt

+0

ええ、それは明示的に設定されていないので、デフォルトはセッション状態をサポートすると仮定しているので、<%@ Page Title = "" Language = "C#" MasterPageFile = "Main.Master" AutoEventWireup = "true" CodeBehind = "CompanyValuations.aspx.cs" Inherits = "WoodMac.WebTools.WebCAT.CompanyValuations"%> – Philip

+0

web.configを見て、セッションがグローバルに有効になっていることを確認してください。セッションがPageディレクティブで明示的に設定されていない場合は、web.configの設定に継承され、machine.configによってその設定が継承されます。 – citronas

0

最後に、コードのページとクラスの名前を変更して問題を解決しました。新しいページを作成し、マークアップをコピーしてASPXと名前を変更したクラスの本文にコピーし、新しいクラスの本文に貼り付けます。コードは、失敗した時点を超えて実行されるようになりました。

3時間後に戻ってくるつもりはありません。: -

関連する問題