2009-05-31 3 views
31

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

http://www.mysite.com/myApp 

или

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

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

ответ

71

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

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

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

VirtualPathUtility.GetDirectory(Request.Path) 

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

+2

И если приложение представляет собой виртуальный каталог в IIS, но страница, мы запрашиваемый в несколько папки, но мы хотим, чтобы путь, включая виртуальный каталог, но не папки, как это сделать ? – Krunal

+1

@Krunal [HttpRuntime.AppDomainAppVirtualPath] (https://msdn.microsoft.com/en-us/library/system.web.httpruntime.appdomainappvirtualpath (v = vs.110) .aspx) или Request.ApplicationPath – jproch

2

Постарайся это (Не пробовал)

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

Link 1

Link 2

1

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

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

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

+0

Ссылка сломана –

18
Request.Url 

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

enter image description here

3

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

  1. Хостинг в виде отдельного веб-приложения.
  2. Хостинг как виртуальное приложение в веб-приложении.

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

Смежные вопросы