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

Как получить путь, который обычно выглядит как %SystemDrive%\inetpub\wwwroot?

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

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

Ответы [ 3 ]

39 голосов
/ 12 июля 2010

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

// 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);
}

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

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

6 голосов
/ 12 июля 2010

Server.MapPath

или

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

Объект RequestObject

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

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

Обновления

Чтобы получить доступ к iis из приложения Windows, пройдите по этой статье: Модификация метабазы ​​IIS в C # (для II 6.0,5.0)

0 голосов
/ 12 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...