Как получить физический путь веб-сайта на локальном сервере IIS? (из настольного приложения)

Как получить путь, который обычно похож %SystemDrive%\inetpub\wwwroot ?

Я предполагаю, что это - что-то, чтобы сделать с Microsoft.Web.Administration.ServerManager класс, но я не мог найти путь.

Обновление: я пытаюсь получить путь из автономного приложения. Не веб-приложение ASP.NET.

21
задан Kev 10 February 2011 в 18:29
поделиться

3 ответа

Чтобы обнаружить физический путь к веб-сайту из автономного вы можете сделать следующее:

// If IIS7
// Add reference to Microsoft.Web.Administration in 
// C:\windows\system32\inetsrv

using Microsoft.Web.Administration;
...

int iisNumber = 2;

using(ServerManager serverManager = new ServerManager())
{
  var site = serverManager.Sites.Where(s => s.Id == iisNumber).Single();
  var applicationRoot = 
           site.Applications.Where(a => a.Path == "/").Single();
  var virtualRoot = 
           applicationRoot.VirtualDirectories.Where(v => v.Path == "/").Single();
  Console.WriteLine(virtualRoot.PhysicalPath);
}

Если вы используете IIS 6 (или уровень совместимости администратора IIS6 для IIS7)

// If IIS6
// Add reference to System.DirectoryServices on .NET add ref tab

using System.DirectoryServices;
...

int iisNumber = 2;

string metabasePath = String.Format("IIS://Localhost/W3SVC/{0}/root", iisNumber);
using(DirectoryEntry de = new DirectoryEntry(metabasePath))
{
  Console.WriteLine(de.Properties["Path"].Value);
}

Оба этих примера демонстрируют, как определить путь к корню веб-сайта .

Чтобы определить путь к виртуальному каталогу, вам нужно изменить пути по мере необходимости.

43
ответ дан 29 November 2019 в 20:06
поделиться

Server.MapPath

или

Доступные пути объектов запроса

Свойство объекта запроса

PhysicalApplicationPath - Возвращает путь локальной файловой системы виртуального корня для данного приложения. c:\inetpub\wwwroot\webstore

PhysicalPath -Возвращает путь локальной файловой системы к текущему скрипту или пути. c:\inetpub\wwwroot\webstore\admin\paths.aspx

Updates

Для доступа к iis из приложения windows пройдите по этой статье : Модификация метабазы IIS на C# (Для IIs 6.0, 5.0)

6
ответ дан 29 November 2019 в 20:06
поделиться

Server.MapPath не работает в среде общего хостинга, в этом случае вы можете использовать HostingEnvironment.MapPath .

0
ответ дан 29 November 2019 в 20:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: