2

ASP.NETMVCアプリを備えた本番IISサーバーがあります。キャプチャできないトリッキーなバグがありました。セッションデータにリンクされています。このようなユーザーセッションをエクスポート/表示/表示するにはどうすればよいですか?セッション保存用のデフォルトのIIS構成があります--in-process。


編集

ちなみに必要な適切なユーザーセッションIDがあります。


EDIT2

さて、皆さん、今そのデータをエクスポートできない場合でも、セッションデータを保存してさらに表示するために使用できるセッション状態サーバーなどを教えていただけますか?私はSQLServerを知っていますが、そのような問題には非常に重いです。

4

3 に答える 3

3

Chris は彼のアイデアをそのまま踏襲しています。セッション オブジェクトの内容をファイル (一種のカスタム ログ) に出力するルーチンを作成できます。

//Controller Action where you store some objects in session
public ActionResult Index()
{
    var myObj = new { strTest = "test string", dtTestValue = DateTime.Now, listTest = new List<string>() { "list item 1", "list item 2", "list item 3"  }};
    Session["test1"] = "Test";
    Session["test2"] = myObj;

    return View();

}

//Controller Action where you output session objects to a file 
[HttpPost]
public ActionResult Index(FormCollection form)
{
    //Routine to write each sessionObject serialized as json to a file 
    foreach (string key in Session.Keys)
    {
        var obj = Session[key];
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\CustomAspNetLog.txt", true))
        {
            file.WriteLine(DateTime.Now.ToString() + "\t" + serializer.Serialize(obj));
        } 
    }
    return View();
}

そのルーチンを頻繁に呼び出す必要がある場合は、ヘルパー クラスに入れて、コントローラー アクションでいつでも呼び出すことができます。次に、必要なすべてのステップでセッション内の真のデータを調べることができます。

于 2012-12-18T10:43:44.327 に答える
2

いいえ、必要に応じてセッション データをエクスポートするルーチンを作成する必要があります。

于 2012-12-18T09:09:17.780 に答える
1

KSeen

StateServer、つまり分散キャッシュ プロバイダーよりもセッションを格納するための優れたオプションがあります。

Alachisoft は、完全に無料の NCache Express を提供しています。これを使用して、セッションを保存できます。その方法は次のとおりです。

各 Web サーバーに NCache をインストールします。分散キャッシュを定義する: 分散キャッシュをテストして、適切に機能していることを確認してください。web.config ファイルを変更します。SessionState プロバイダー情報と、作成したばかりのキャッシュの名前を追加します。

  <sessionState cookieless="false" regenerateExpiredSessionId="true"
   mode="Custom"
                customProvider="NCacheSessionProvider" timeout="1">
        <providers>
              <add name="NCacheSessionProvider"
                    type="Alachisoft.NCache.Web.SessionState.
                    NSessionStoreProvider"
                    cacheName="myreplicatedcache" 
        writeExceptionsToEventLog="false"
                    AsyncSession="false"/>
        </providers>
  </sessionState>

Version=3.2.1.0 は、ダウンロードした特定の NCache Express バージョンと一致する必要があることに注意してください。これを行うと、ASP.NET アプリケーションで分散セッションの使用を開始する準備が整います。

于 2012-12-21T12:46:35.367 に答える