2009-10-07 4 views
0

LogParser를 사용하여 단일 IIS 사이트의 대역폭을 보여주는 WinForms 앱을 개발했습니다. 이것은 꽤 잘 돌아갔다.웹 응용 프로그램에서 LogParser 실패

지금 ASP.net에서 똑같은 일을 서면으로 작성했습니다,하지만 다음과 같은 예외가 발생합니다 : ": \을 Inetpub \ 로그 \ LogFiles 참고 \ W3SVC4 \ 예 * .LOG C"

을 일치하는 모든 파일을 찾을 수 없습니다

우리의 모든 로그 파일은 'ex'가 아닌 'u_ex'접두어로되어 있으므로 예외가 발생합니다 (기본 IIS 설정). WinForms 응용 프로그램에서 실행할 때 작동하고 웹 응용 프로그램에 넣을 때가 아니라는 것은 이상한 일입니다.

왜 이런 일이 발생하고 어떻게 해결할 수 있는지 아는 사람이 있습니까?

감사합니다. \을 Inetpub \ 로그 \ LogFiles 참고 \ W3SVC4 \ 폴더 :

private void UpdateByDateRange(DateTime dateFrom, DateTime dateTo) 
{ 

string siteId = Request.ServerVariables["INSTANCE_ID"]; 
LogQueryClassClass logger = new LogQueryClassClass(); 

COMIISW3CInputContextClass inputContext = new COMIISW3CInputContextClassClass(); 
string query = "SELECT SUM(TO_REAL(sc-bytes)) AS sentTotal, SUM(TO_REAL(cs-bytes)) AS receivedTotal FROM <" + siteId + "> WHERE TO_TIMESTAMP(date, time) >= TO_TIMESTAMP('" + dateFrom.ToString("yyyy-MM-dd HH:mm:ss") + "', 'yyyy-MM-dd HH:mm:ss') AND TO_TIMESTAMP(date, time) <= TO_TIMESTAMP('" + dateTo.ToString("yyyy-MM-dd HH:mm:ss") + "', 'yyyy-MM-dd HH:mm:ss')"; 

ILogRecord record = logger.Execute(query, inputContext).getRecord(); 
decimal trafficSent = decimal.Parse(record.getValue("sentTotal").ToString()); 

decimal trafficReceived = decimal.Parse(record.getValue("receivedTotal").ToString()); 
// ... 

} 

답변

0

가 ASPNET는 C에 대한 권한이 있습니까 :

는 여기에 내가 사용하고 코드의 척입니까? 이 오류는 일반적으로 파일이 없거나 런타임에 사용 권한이 없을 때 발생합니다. Asp.Net 응용 프로그램으로 AspNet 계정에이 폴더에 대한 액세스 권한이 있는지 확인하거나 액세스 권한이있는 다른 계정으로 웹 사이트를 실행해야합니다.

이 이전 게시물이 도움이 될 수 있습니다.

ASPNET user does not have write access to Temporary ASP.NET Files

+0

답장을 보내 주셔서 감사합니다. 부터 내 권리가 올바르다는 것을 확신합니다. a) 보안은이 문제에 부딪 치기 전에 내가 만났던 첫번째 문제였습니다. 및 b) 예외는 sence를 만듭니다 (ex가 붙은 파일이 없음) –

0

은 아마 당신은 FROM 키워드 후 쿼리에 따옴표를 사용하지 않아야합니다.

관련 문제