2017-01-05 14 views
-5

レガシー/遺産コードのクリーンアップを自動化しようとしていますが、現在使用しているリソースをIISログから特定できますが、.ASPと.PHPのようなサーバーサイドページには、PHPとASPには依存関係が含まれています

  • OS ...コードを経由して(C#)と、それはあまりにも広かったとしてダウン質問を狭くするためには

    を識別できるようにする - Windowsの10

  • Web Serverは -
  • 好ましいのは、IIS言語 - C#
  • 例 - すべてのIISは、私は私が最初の.ASPまたは.PHPのページを含むすべての静的務めたリソースを特定したIISログファイルを読み取るコードを持っているウェブサイト

を務めました。

サーバー上で処理され、IISログに表示されない.ASPまたは.PHPインクルードファイルについても、C#コードに添付する必要があります。

私は解決策を見つけ、以下の答えを示しました。

は、私は、これはターゲットフォルダ内のファイルの最終アクセス時間をチェックしに私を指しているため@Progrockする「保留」

+0

Phpを使うと、spl_autoload_register経由でクラス名をファイルパスに自動的にマッピング(自動ロード)することができます。そうでなければ、include/require(_once)行を探すといいでしょう。 – Progrock

+0

オフトピック:http://stackoverflow.com/help/on-topic – CD001

+1

最近の最後のアクセスファイルの時間はすべてではありませんか? – Progrock

答えて

0

多くのおかげでこれを脱ぐのに十分なディテールであると思います。これは私がしなければならなかったことです。

はまたのFileInfo上の任意のメモリファイルにキャッシュさ

Process.Start("IISRESET").WaitForExit(); 

リフレッシュする必要が停止するようにIISを再起動する必要が

Process.Start("fsutil", "behavior set disablelastaccess 0").WaitForExit(); 

Directory.GetFiles keeping the last access timeを参照)、最後のアクセスした時刻は、Windowsで設定されているキャプチャすることを確認正しい最後のアクセス時間を確保するために実行してください( How can System.IO.FileSystemInfo.Refresh be used参照)。これは、次のコードの結果

...

var start = DateTime.UtcNow; 
Process.Start("fsutil", "behavior set disablelastaccess 0").WaitForExit(); 
Process.Start("IISRESET").WaitForExit(); 
//do work that will access folder. i.e. access IIS web pages 
var files = Directory.GetFiles(iisPath, "*.*", SearchOption.AllDirectories).ToList(); 
files = files.Where(x => 
{ 
    var fileInfo = new FileInfo(x); 
    fileInfo.Refresh(); 
    return fileInfo.LastAccessTimeUtc >= start; 
}).ToList(); 

は、私はすべての.ASPと.PHPとページ要求のIISサーバーを経由してアクセスされた他のファイルを識別するために、このファイルリストを使用することができます。

関連する問題