2012-02-27 31 views
7

Tôi đang cố gắng xác định vị trí của vị trí tệp nhật ký IIS của ứng dụng ASP.NET của tôi. Tôi đã thử WMI, nhưng không thể tìm thấy nó. Bất kỳ đề xuất?Lập trình truy xuất vị trí tệp nhật ký IIS trong ứng dụng ASP.NET

Lưu ý: Tôi muốn có thể truy xuất vị trí theo chương trình; bên trong ứng dụng của tôi để sử dụng thêm. Chỉnh sửa: Đây là mã của tôi: Tác vụ này nhưng không cung cấp cho tôi vị trí thư mục thực tế của nhật ký. Vì vậy, điều này về cơ bản là vô ích.

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

hiển thị mã của bạn ?? những gì bạn đã làm cho đến nay, để chúng tôi có thể giúp với cây đũa thần: D –

+0

Tôi nghĩ rằng bạn cố gắng làm cho cuộc sống của bạn trở nên khó khăn. Trường hợp tệp này là cái gì mà bạn kiểm soát và biết tại sao bạn lại tìm thấy chúng tìm kiếm một số tệp thiết lập có thể không có quyền truy cập vào chúng? – Aristos

+0

Tôi đã chỉnh sửa câu hỏi của mình. Nhưng tôi không tin rằng nó sẽ giúp bạn, vì khối mã này hiển thị một cái gì đó khác với những gì tôi cần. Cảm ơn đã trả lời nhanh chóng. – Slethron

Trả lời

5

On IIS7 bạn có thể sử dụng lắp ráp Microsoft.Web.Administration, Site lớp có một tài sản mang tên LogFile, bạn có thể nhận được thông tin khác nhau về tập tin đăng nhập cho trang web, cho thư mục tập tin ví dụ log có thể thu được với mã này:

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

tôi không thích rất nhiều mà phần hardcoded với tiền tố thư mục cho trang web, nhưng không tìm thấy bất kỳ cách nào khác tốt hơn

0

Bạn nên có thể sử dụng ADSI (hoặc WMI) để làm điều đó - duyệt IIS metabase và tìm 'L thuộc tính ogFileDirectory 'cho nút trang web. Ví dụ,

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]; 
} 

Disclaimer: đang chưa được kiểm tra

Xem this powershell example sử dụng ý tưởng tương tự.

Các vấn đề liên quan