2017-10-13 4 views
0

私が継承したベースページがあります。BasePageを初期化するときにHttpContext.SessionがNULLになる

public class BasePage : System.Web.UI.Page 
{ 
    protected readonly ValueExtractor ValueExtractor; 
    protected sealed override HttpContext Context => base.Context; 

    public BasePage() 
    { 
     ValueExtractor = new ValueExtractor(new HttpContextWrapper(Context)); 
     ClientTimeZone = new TimeZoneHelper(OrganizationId); 
    } 

    public int OrganizationId 
    { 
     get { return ValueExtractor.ExtractValFromSession<int>("OrgId"); } 
     set { Session["OrgId"] = value; } 
    } 
} 

私が経験してる問題はOrganizationIdが0

ValueExtractor.ExtractValFromSessionあなたはページのコンストラクタにセッションにアクセスすることはできません。この

public T ExtractValFromSession<T>(string key, bool throwException = true) 
{ 
    var ret = default(T); 
    var typeParameterType = typeof(T); 
    if (_context.Session == null) return ret; // The problem occurs here because Session is null 
    var val = _context.Session[key]; 
    if (val != null) 
    { 
     try 
     { 
      if (typeParameterType == typeof(int)) 
      { 
       int r; 
       int.TryParse(val.ToString(), out r); 
       ret = (T)Convert.ChangeType(r, typeof(T), CultureInfo.InvariantCulture); 
      } 
      else if (typeParameterType == typeof(bool)) 
      { 
       bool r; 
       bool.TryParse(val.ToString(), out r); 
       ret = (T)Convert.ChangeType(r, typeof(T), CultureInfo.InvariantCulture); 
      } 
      else if(typeParameterType == typeof(string)) 
       ret = (T)Convert.ChangeType(val.ToString(), typeof(T), CultureInfo.InvariantCulture); 
      else 
       ret = (T)Convert.ChangeType(val, typeof(T), CultureInfo.InvariantCulture); 

     } 
     catch (Exception ex) 
     { 
      throw new ApplicationException($"ExtractValFromSession error: {ex.Message}"); 
     } 
    } 
    else 
    { 
     return ret; 
    } 
    return ret; 
} 
+0

コンテキストを宣言する必要はありません。あなたはページから継承しているので、既にアクセスできます。 – VDWWD

答えて

1

のように見えるを返すということですこのコードをpage_loadまたはページライフサイクルの他の方法に移動する必要があります。

詳細情報the page lifecycle docs

関連する問題