[C#,ASP.NET이벤트로그만들기]System.Security.SecurityException

홈 > 공유팁! > 프로그램 관련
프로그램 관련

[C#,ASP.NET이벤트로그만들기]System.Security.SecurityException

꽁스짱 0 1249
[C#,ASP.NET이벤트로그만들기]System.Security.SecurityException

이벤트로그를 작성할 때 EventLog.CreateEventSource(...)를 사용해야 하는데 윈도우 레지스트리에서 이벤트로그에 대한 권한이 없는 경우 System.Security.SecurityException이 발생하는데 다음과 같은 방법으로 해결하면 된다.

레지스트리(regedit)를 실행 후 다음 경로로 이동하자.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security

각각에서 마우스 우측 버튼을 눌러 사용권한 --> 추가 에서 읽기/쓰기 권한을 주자.
IIS를 실행하는다른 USER가 있다면 적절히 추가해서 읽기/쓰기 권한을 주자.

[예제]

<%@ Import Namespace="System.Diagnostics" %>
<%@ Page debug="true" %>
<script Language="C#" runat="server">
void EventToLog() {
    int[] array = new int[5];
    for(int cnt=0; cnt <=5; cnt++) {
    array[cnt] = cnt;
    Response.Write("카운터값: " + cnt + "<br>");
    }
}
void Page_Error(object sender, EventArgs e) {
    string errMsg = "Error : " + Server.GetLastError().ToString();
    Server.ClearError();
    string LogName = "MyEventLog";
    string SourceName = "TEST";

    
    
    if (!(EventLog.SourceExists(SourceName))) {
        EventLog.CreateEventSource(SourceName, LogName);
    }
    
    EventLog log = new EventLog();
    log.Source = SourceName;
    log.WriteEntry(errMsg, EventLogEntryType.Error);
}
void Page_Load() {EventToLog();}
</script>


실행 후 제어판 --> 관리도구 --> 이벤트뷰어에서 MyEvent 라는 로그가 생긴것을 알수있다. 

확인해 보자.
0 Comments
제목