2012-12-18 3 views
2

일부 ASP.NET MVC 응용 프로그램이있는 프로덕션 IIS 서버가 있습니다. 내가 잡을 수없는 까다로운 버그가있다. 그것은 세션 데이터에 링크되어 있습니다. 어떻게 이러한 사용자 세션을 내보내거나 보거나 볼 수 있습니까? 세션 저장 프로세스에는 기본 IIS 구성이 있습니다. 그런데디버깅하는 동안 IIS 인 프로세스 세션 데이터 내보내기


편집은 내가 필요한 적절한 사용자 세션 ID가 있습니다.


EDIT2

좋아, 얘들 아, 내가 지금 데이터를 내보낼 수 있도록 경우에도, 당신은 내가 사용할 수있는 몇 가지 세션 상태 서버 또는 이와 유사한에서 날 지점하시기 바랍니다 수 세션 데이터를 저장하고 더 볼 수 있습니까? SQL Server를 사용할 수는 있지만 그러한 문제는 매우 무거웠습니다.

+0

내가 제안한 것을 시도해볼 수 있겠습니까? –

+0

@ Arno2501 죄송합니다, 이것은 내가 필요한 것이 아닙니다. 어쨌든 당신의 답변에 감사드립니다. – kseen

+0

오 확인 문제는 당신이해야 할 수도 있습니다 이해하지 않습니다하지만 –

답변

2

아니요, 필요하면 세션 데이터를 내보내는 루틴을 작성해야합니다. 크리스는 바로 자신의 아이디어에 따르는

3

, 당신은 파일 (사용자 정의 로그의 종류)로 출력 세션 객체의 내용을 것 루틴을 작성할 수 있습니다.

//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(); 
} 

자주 그 루틴을 호출해야하는 경우, 당신은 몇 가지 헬퍼 클래스에 넣어 수 있고 당신이 당신의 컨트롤러 행동 할 때마다 호출. 그런 다음 필요한 모든 단계에서 세션 내의 실제 데이터를 검사 할 수 있습니다. KSeen

은 StateServer 즉 분산 캐시 공급자보다는 세션을 저장하는 더 나은 옵션이 있습니다

+0

, 완벽한 –

1

.

는 Alachisoft는 free.You이 sessions.Here 당신이 그것을 어떻게 저장하는 데 사용할 수 있습니다 완전히이다 NCache 익스프레스를 제공합니다.

각 웹 서버에 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> 

버전 = 3.2.1.0이 다운로드 한 특정 NCache 익스프레스 버전과 일치해야 함을 유의하시기 바랍니다. 이렇게하면 ASP.NET 응용 프로그램이 분산 세션을 사용할 준비가 된 것입니다.

관련 문제