Получить путь к приложению без использования httpcontext. (asp.net)

Как это сделать?

Я не хочу использовать это:

HttpContext.Current.Server.MapPath

Есть ли аналогичная функция, которую я могу вызвать, не требуя httpcontext?

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


person Tomasi    schedule 09.03.2010    source источник


Ответы (3)


Используйте свойство HttpRuntime.AppDomainAppPath.

person SLaks    schedule 09.03.2010
comment
Это низкоуровневый класс, который большинству людей не нужен. - person SLaks; 09.03.2010


Я столкнулся с этим вопросом, когда искал способ вычислить 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 (не работает, если на одной машине определено несколько доменов).

person Alexei - check Codidact    schedule 18.03.2016