2009-10-07 8 views
0

J'ai développé une application WinForms qui affiche la bande passante d'un seul site IIS en utilisant LogParser. Cela a très bien fonctionné.LogParser échouant dans WebApp

J'ai maintenant écrit exactement la même chose en ASP.net, mais l'exception suivante est générée: Impossible de trouver un fichier correspondant à "C: \ inetpub \ logs \ LogFiles \ W3SVC4 \ ex * .log"

L'exception fait référence, puisque tous nos fichiers journaux sont préfixés avec 'u_ex' et non 'ex' (paramètres IIS par défaut je suppose). Il est juste étrange que cela fonctionne quand il est exécuté à partir d'une application WinForms et non lorsqu'il est placé dans une application Web.

Est-ce que quelqu'un sait pourquoi cela se produit et comment je peux le réparer?

Merci!

est ici un mandrin du code J'utilise:

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

} 

Répondre

0

-t-réSEAU ont des autorisations sur le répertoire C: \ inetpub \ logs \ LogFiles \ W3SVC4 \ dossier? Cette erreur se produit normalement lorsque le fichier n'existe pas OU que le moteur d'exécution n'a pas d'autorisations. Comme une application Asp.Net, vous devez vous assurer que le compte AspNet a accès à ce dossier ou exécuter le site Web sous un autre compte qui a accès.

Cet article plus ancien pourrait vous aider.

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

+0

Merci pour votre réponse. Je suis assez sûr que mes droits sont corrects depuis a) La sécurité a été le premier problème que j'ai rencontré et avait corrigé avant que je rencontre ce problème. et b) L'exception fait sence (il n'y a pas de fichiers préfixés avec ex) –

0

Peut-être que vous ne devriez pas utiliser des guillemets dans votre requête après mot clé FROM.