Подтвердить что ты не робот

Как получить полный виртуальный путь приложения ASP.NET

Как узнать полный виртуальный путь, который находится в моем приложении? Например:

http://www.mysite.com/myApp

или

http://www.mysite.com/myApp/mySubApp

Я знаю путь приложения HttpRequest, но он возвращает только имя папки, в которой находится мое приложение, но как получить начальную часть?

4b9b3361

Ответ 1

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

Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath

Технически "приложение" представляет собой виртуальный каталог, определенный в IIS, и Request.ApplicationPath возвращает именно это. Если вы хотите получить папку, в которой выполняется текущий запрос, вы можете сделать это:

VirtualPathUtility.GetDirectory(Request.Path)

ASP.NET не знает, как отличить ваше под-приложение от большего приложения, если оно не определено как виртуальный каталог в IIS. Не регистрируясь в IIS, он просто видит все это как одно приложение.

Ответ 2

Request.Url

он содержит несколько точек, которые вы можете использовать, см. изображение ниже:

enter image description here

Ответ 3

В .NET 4.5

    VirtualPathUtility.ToAppRelative(path)

Ответ 4

Нижеприведенный код решит цель, однако вам нужно выполнить небольшую настройку для двух типов сценариев:

  • Размещено как отдельное веб-приложение.
  • размещен как виртуальное приложение в веб-приложении.

    HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath;

Ответ 5

Попробуйте (не пробовал)

public string GetVirtualPath(string physicalPath)
{
string rootpath = Server.MapPath("~/");
physicalPath = physicalPath.Replace(rootpath, "");
physicalPath = physicalPath.Replace("\\", "/");
return "~/" + physicalPath;
}

Ссылка 1

Ссылка 2

Ответ 6

Чтобы полностью ответить на этот вопрос, я думаю, вам нужно описать, что вы на самом деле пытаетесь сделать, и что делает ваше значение пути "неизвестным"

Обычно, когда я сталкиваюсь с проблемами поиска Path, это сообщение в блоге от Rick Strahl очищает меня от меня: http://www.west-wind.com/weblog/posts/269.aspx p >

Возможно, вам нужно будет смешивать и сопоставлять, чтобы получить то, что вы хотите.