2012-02-27 18 views
7

Próbuję określić położenie lokalizacji pliku logu IIS mojej aplikacji ASP.NET. Próbowałem WMI, ale nie byłem w stanie go znaleźć. Jakieś sugestie?Programowe pobieranie położenia pliku dziennika IIS w aplikacji ASP.NET

Uwaga: Chcę programowo pobrać lokalizację; w mojej aplikacji do dalszego użytku. Edycja: Oto mój kod: To działa, ale nie daje mi faktycznej fizycznej lokalizacji katalogu dzienników. Jest to w zasadzie bezużyteczne.

ManagementPath p2=new ManagementPath("IIsLogModule.Name='logging/Microsoft IIS Log File Format'"); 
ManagementObject log = new ManagementObject(scope, p2, objectGet); 
log.Get(); 
logPath.Text = log["__PATH"].ToString(); 
+0

wyświetlać swój kod ?? co zrobiłeś do tej pory, abyśmy mogli pomóc z magiczną różdżką: D –

+0

Myślę, że próbujesz utrudnić swoje życie. Gdzie ten plik jest czymś, co kontrolujesz i wiesz, dlaczego wygrałeś, aby znaleźć pliki instalacyjne, które prawdopodobnie nie mają do nich dostępu? – Aristos

+0

Edytowałem moje pytanie. Ale nie wierzę, że ci to pomoże, ponieważ ten blok kodu wyświetla coś innego niż to, czego potrzebuję. Dziękuję za szybką odpowiedź. – Slethron

Odpowiedz

5

W IIS7 można użyć zestawu Microsoft.Web.Administration, Site klasa ma właściwość o nazwie LogFile, można uzyskać różne informacje na temat pliku dziennika na miejscu, na przykład katalogu plików dziennika można uzyskać z tego kodu:

ServerManager manager = new ServerManager(); 
    Site mySite = manager.Sites["SiteName"]; 
    Response.Write("Log file directory : " + mySite.LogFile.Directory + "\\W3svc" + mySite.Id.ToString()); 

nie podoba mi się bardzo, że ustalony część z katalogu prefiksem miejscu, ale nie znaleźliśmy żadnego innego lepszego sposobu

0

Powinieneś móc korzystać ADSI (lub WMI), aby to zrobić - przeglądaj metabazę IIS i poszukaj "L Właściwość ogFileDirectory dla węzła witryny sieci Web. Na przykład,

var root = new DirectoryEntry(@"IIS://localhost/W3SVC"); 
var sites = root.Children; 
foreach(DirectoryEntry site in sites) { 
    var name = site.Properties["ServerComment"][0]; 
    var logFile = site.Properties["LogFileDirectory"][0]; 
} 

Zastrzeżenie: kod Nietestowane

Zobacz this powershell example stosując podobny pomysł.

Powiązane problemy