Программный поиск местоположения файла журнала IIS в приложении ASP.NET - PullRequest
7 голосов
/ 27 февраля 2012

Я пытаюсь определить местоположение расположения файла журнала IIS моего приложения ASP.NET.Я попробовал WMI, но не смог найти его.Любые предложения?

Примечание: я хочу иметь возможность получить местоположение программно;внутри моего приложения для дальнейшего использования.Изменить: Вот мой код: это работает, но не дает мне фактическое физическое местоположение каталога журналов.Так что это в основном бесполезно.

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

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012

В IIS7 вы можете использовать сборку Microsoft.Web.Administration, Класс сайта имеет свойство с именем LogFile , вы можете получить различную информацию о файле журнала для сайта, например, файл журнала каталог можно получить с помощью этого кода:

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

Мне не очень нравится эта жестко запрограммированная часть с префиксом каталога для сайта, но я не нашел другого лучшего способа

0 голосов
/ 27 февраля 2012

Вы должны иметь возможность использовать ADSI (или WMI) для этого - просмотрите метабазу IIS и найдите свойство LogFileDirectory для узла веб-сайта.Например,

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

Отказ от ответственности: Непроверенный код

См. этот пример PowerShell с использованием аналогичной идеи.

...