2012-02-27 9 views
7

ASP.NETアプリケーションのIISログファイルの場所を特定しようとしています。私はWMIを試しましたが、それを見つけることができませんでした。助言がありますか?ASP.NETアプリケーションでIISログファイルの場所をプログラムで取得する

注:プログラムで場所を取得できます。さらなる使用のために私のアプリケーションの中に。 編集:これは私のコードです:これは動作しますが、私にログの実際の物理ディレクトリの場所を与えません。だから、これは基本的に役に立たない。 IIS7で

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

あなたのコードを表示しますか?私たちが魔法の杖で助けることができるように、これまで行ってきたこと:D –

+0

あなたの人生を困難にしようとしていると思います。このファイルは、あなたが制御して知っているもので、おそらくそれらにアクセスできないセットアップファイルを探して見つけたのはなぜですか? – Aristos

+0

私は自分の質問を編集しました。しかし、このコードブロックは私が必要とするものとは異なるものを表示するので、それがあなたを助けるとは思わない。早速のお返事ありがとうございます。 – Slethron

答えて

5

あなたはMicrosoft.Web.Administrationアセンブリを使用することができ、SiteクラスはLogFileという名前のプロパティを持っている、あなたは、サイトのログファイルに関するさまざまな情報を得ることができ、例えば、ログファイルのディレクトリについては、このコードで取得することができます。

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

私は、サイトのディレクトリ接頭辞で非常に多くのこと、ハードコード部分が好きではありませんが、あなたはそれを行うには、ADSI(またはWMI)を使用することができすべき他のより良い方法

0

を見つけられませんでした - IISメタベースをブラウズし、 'L WebサイトノードのogFileDirectoryプロパティ。例えば、

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

免責事項:未テストコード

は、同様のアイデアを使用してthis powershell exampleを参照してください。

関連する問題