Как получить полное имя хоста + номер порта в Application_Start из Global.aspx?

Я пытался

Uri uri = HttpContext.Current.Request.Url; String host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port; 

и он хорошо работал на моей локальной машине, но при публикации в IIS7 есть исключение, говорящее

 System.Web.HttpException: Request is not available in this context 

Кто-нибудь знает, как это достичь?

    Когда запускается веб-приложение, HTTP-запрос не обрабатывается.

    Возможно, вы захотите обработать определение метода Application_BeginRequest (Object Sender, EventArgs e), в котором доступен контекст запроса.

    Изменить: Вот пример кода, вдохновленный блоком Майка Володарского, с которым связан Майкл Шимминс:

      void Application_BeginRequest(Object source, EventArgs e) { HttpApplication app = (HttpApplication)source; var host = FirstRequestInitialisation.Initialise(app.Context); } static class FirstRequestInitialisation { private static string host = null; private static Object s_lock = new Object(); // Initialise only on the first request public static string Initialise(HttpContext context) { if (string.IsNullOrEmpty(host)) { lock (s_lock) { if (string.IsNullOrEmpty(host)) { var uri = context.Request.Url; host = uri.GetLeftPart(UriPartial.Authority); } } } return host; } } 

    Принятый ответ хорош, но в большинстве случаев (если первым запросом является HTTP-запрос), лучше использовать событие Session_Start , которое вызывается один раз для каждого пользователя каждые 20 минут или около того (не уверен, насколько долго сессия действительна). Application_BeginRequest будет запущен каждый запрос.

     public void Session_Start(Object source, EventArgs e) { //Request / Request.Url is available here :) } 

    Просто отвечая на это, поэтому, если кто-то решит на самом деле искать по этой теме …

    Это работает при запуске приложения в любом режиме …

     typeof(HttpContext).GetField("_request", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(HttpContext.Current) 
    Interesting Posts

    Используйте обычные клавиши в качестве клавиш-модификаторов, например, нажмите S и F вместе вместо Ctrl + S, чтобы сохранить файл

    Вывод из цикла for в Java

    Hardlinks на ntfs с окнами

    Как я могу написать «использовать эту ячейку или, если пусто, использовать эту другую ячейку» в Excel 2007?

    Как нарисовать линию gradleиента (затухание в / из) с помощью Core Graphics / iPhone?

    создание WCF ChannelFactory

    Какой самый простой способ получить текущий день недели в Android?

    Каковы технические отличия между Windows Vista и Windows 7?

    Декомпрессия gz-файла с использованием R

    Как использовать arraylist в качестве подготовленного параметра инструкции

    Сборка Maven 2 с зависимостями: jar under scope «system» не входит в комплект

    Макрос Vba для копирования строки из таблицы, если значение в таблице соответствует условию

    Как создать статическую локальную переменную в Java?

    Есть ли использование unique_ptr с массивом?

    Где хранятся настройки гаджета часов Windows 7?

    Давайте будем гением компьютера.