Я столкнулся с этим вопросом, когда искал способ вычисления URL-адреса (постоянные ссылки в веб-приложении) для предоставления в некоторых уведомлениях по электронной почте.
Они были сгенерированы в другом потоке, поэтому HttpContext
был недоступен, и я хотел избежать размещения информации, относящейся к URL, в таблице очередей, используемой для создания электронных писем.
Код:
public static String GetCurrentAppDomainBasePath(String prefix = "http://")
{
return String.Format("{0}{1}{2}",
prefix,
System.Net.Dns.GetHostEntry("").HostName,
System.Web.HttpRuntime.AppDomainAppVirtualPath
);
}
Функция возвращает полный виртуальный путь, например: http://full-host-name/AppName
. Конечно, есть некоторые ограничения: жестко закодированный протокол (http
, https и т. Д.) И использование hostname
вместо domain name
(происходит сбой, если на одной машине определено несколько доменов).