Как получить полный виртуальный путь приложения ASP.NET
Как узнать полный виртуальный путь, который находится в моем приложении? Например:
http://www.mysite.com/myApp
или
http://www.mysite.com/myApp/mySubApp
Я знаю путь приложения HttpRequest, но он возвращает только имя папки, в которой находится мое приложение, но как получить начальную часть?
Ответы
Ответ 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
Нижеприведенный код решит цель, однако вам нужно выполнить небольшую настройку для двух типов сценариев:
Ответ 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 >
Возможно, вам нужно будет смешивать и сопоставлять, чтобы получить то, что вы хотите.