2010-11-22 3 views
0

ASP.NET 웹 응용 프로그램의 응용 프로그램 이벤트 로그에 쓰고 있습니다. 로그 항목의 "사용자"필드를 어떻게 채울 수 있습니까?ASP.NET 이벤트 로그 : "사용자"필드 채우기?

+0

이 중복 발견 : http://stackoverflow.com/questions/147307/net-how-to-set-user-information-in-an-eventlog-entry –

답변

1

이벤트 로그 항목에 기록 된 사용자는 이벤트 로깅 호출이 이루어질 때 보안 관점에서 스레드를 "소유"하는 사용자입니다. ASP.Net 응용 프로그램 (기본적으로)에서는 ASP.Net이 실행되는 계정이됩니다.

Windows 가장을 사용하여 실행중인 스레드를 변경할 수 있습니다. SO에 대한 예제 질문은 다음을 참조하십시오

Windows Impersonation from C#

이 아닌 사소한 공간, 단순히 이벤트 로깅 호출에 사용자 정보를 공급하는 경우입니다.

+0

내가 볼 수있는 이유에 대한 모든 설명 " 내 ASP.NET 웹 응용 프로그램 (가장을 사용하지 않음)에서 만든 모든 항목의 사용자 필드에 "해당 사항 없음"이 있습니까? – lance

+1

스레드가 시스템 계정으로 실행중인 것으로 식별되면 사용자는 "N/A"로 표시됩니다. –

+0

나는 본다. "N/A"값을 보았을 때 그 필드에 자유 형식의 텍스트 값을 넣을 수 있다고 생각했습니다. Zhaph가 위에서 언급 한 중복 된 질문을 읽으면 상자에 실제 사용자가 있어야한다는 것을 알았습니다 (현재 의미가 있습니다). – lance

0

나는 Asp.net 프로필에서 Username을 움켜 잡았다. 그런 다음 나는 그것을 그 방법으로 전달했다. 여기서는 Global.asax에서 사용했지만 동일한 주체는 다른 곳에서 사용해야합니다.

String username = User.Identity.Name; 
      String pageRequested = ((HttpApplication)sender).Request.Path; 

      error = Server.GetLastError().GetBaseException(); 

      String message = "ERROR MESSAGE: " + error.Message + 
           "\nINNER EXCEPTION: " + error.InnerException + 
           "\nSOURCE: " + error.Source + 
           "\nFORM: " + Request.Form.ToString() + 
           "\nQUERYSTRING: " + Request.QueryString.ToString() + 
           "\nTARGETSITE: " + error.TargetSite + 
           "\nSTACKTRACE: " + error.StackTrace + 
           "\nNCLWEB USERNAME: " + username + 
           "\nDATESTAMP: " + DateTime.Now; 

      System.Diagnostics.EventLog.WriteEntry("NCLWeb", message, System.Diagnostics.EventLogEntryType.Error); 
+1

이것은 사용자 필드를 채우지 않습니까? 내가 놓친 게 있니? – lance

+0

이렇게하면 사용자 이름이 메시지 텍스트에 추가되지만 이벤트 로그에 "사용자"필드 **가 채워지지 않습니다. –

+0

@lance - 아니, 아무것도 놓치지 않고, 나는 그 질문을 오해했다. 이제는 메서드를 살펴 보았지만 사용자 이름을 매개 변수로 전달하는 방법이없는 것처럼 보입니다. – MAW74656