2016-05-26 15 views
2

ローカル(.Net 4.5)のASP MVCサイトを実行しており、セッションから値を取得しようとしているときに問題が発生しています。上記のユーザー名は一例でありnullを返すセッション値

public static void SetSessionValue(string key, object value) 
{  
    HttpContext.Current.Session[key] = value; 
} 

public static object GetSessionValue(string key) 
{ 
    return HttpContext.Current.Session[key]; 
} 

AjaxController.cs

public ActionResult SetUserName(string username) 
{ 
    Helpers.SetSessionValue("username", username); 
} 

public ActionResult GetUserName() 
{ 
    var username = Helpers.GetSessionValue("username"); 
    return Json(new { valid = true, username }); 
} 

Helpers.cs:私は、次のような静的ヘルパー クラスからコードを呼び出すいますしかし、私はこの事件の複数の場合があり、キーの値がnullのたびにキーが存続します。私はさらに上 を行って、テストにSetSessionValueに次の追加:

public static void SetSessionValue(string key, object value) 
{  
    HttpContext.Current.Session[key] = value; 
    var test = HttpContext.Current.Session[key]; 
} 

変数テストは、値が移入されるだろう。私はすべての変数名をダブルチェックしました。キーはまだコレクションに存在しますが、値は消えます。

未遂ソリューション

ソリューション1からHttpContext.Current.Session is null when routing requests

- 私は私のWeb構成、運

<sessionState mode="InProc" timeout="20" /> 

解決策2で次のように設定しHttpContext.Current.Session null item

私は、私のWeb構成で運私は<httpCookies requireSSL="true" />は、web.configファイルで有効にするとしようとしました

  • ではなかったことを確認した

    • を試してみた

      <remove name="Session" /> 
      <add name="Session" type="System.Web.SessionState.SessionStateModule"/> 
      

      その他のアイテムを次のように設定していませんSSLで稼働中

    • リリースモードで実行中
    • 保証なしSession.Abandon();またはSession.Clear();
    • 何のウイルススキャンが
    • [WebMethod(EnableSession = true)]
    • に追加しようとしました実行していたことを確認、私は他の場所で
    • 更新私のASP.NET状態サービスを確保していなかったにするために検索した実行しなかったことを確認しました私はクッキーは私がに問題があると思い、ちょうど来るものを参照してください、クッキーレスモードに確認してください、あなたはほとんどすべてをチェックしました
  • +1

    ブラウザでクッキーが有効になっているかどうかを確認してください。 –

    +0

    もう一度確認してください... –

    +0

    2番目のパラメータで実際にSetSessionValue/SetUserNameをnullで呼び出す可能性はありますか? SetSessionValueが呼​​び出されたときにいくつかのログを追加するかもしれません。 – xianwill

    答えて

    3

    問題が見つかりました...と馬鹿のように感じる。私が行って、IIS Expressのすべてのインスタンスと実行中のサービスを終了したにもかかわらず、プロジェクトの別のインスタンスがどこかに走っていて、セッションアイテムが混乱していました。

    は私が行って、ポート番号 を変更し、私は今までにすべてのものを持っていたことを確認するには、(右プロジェクト]をクリックします - > [プロパティ])を

    enter image description here

    をそうした後、予想通りにすべてが働きました。これは非常にユニークなケースかもしれませんが、誰かが同様の状況に陥る可能性がある場合に備えて投稿したいと考えていました。

    0

    を有効にして確保してきましたあなたのクッキーのもの:

    <sessionState mode="InProc" cookieless="true" /> 
    
    +0

    残念ながらうまくいきませんでした –

    +0

    母はちょうどあなたの答えを見ました、それは本当にうそつきでしたが、とにかくやった – akazemis

    +2

    クール、幸せあなたは問題を発見した。とにかくcookielessはいくつかのブラウザのための解決策かもしれません。 – akazemis