[C#,ASP.NET이벤트로그만들기]System.Security.SecurityException
꽁스짱
ASP.NET
0
1248
2021.02.17 02:02
[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 라는 로그가 생긴것을 알수있다.
확인해 보자.