ASP.NET - получить URL-адрес веб-сайта без HttpContext.Current (работает в фоновом потоке) - PullRequest
2 голосов
/ 03 августа 2010

Слишком много времени, но есть ли способ в ASP.NET динамически получить URL-адрес веб-сайта (http://www.example.com), когда нет доступного HttpContext.Current.

Нет HttpContextпотому что код выполняется в фоновом потоке * (но в ASP.NET AppDomain). У меня есть фоновый процесс, который отправляет электронные письма каждый вечер, и мне нужно включить веб-адрес, но я не хочу его жестко кодироватьиз-за развертываний и тестирования (оно изменяется с http://localhost:12345 на http://testing.example.com, а затем на http://www.example.com для действующего сайта).

* Пожалуйста, не советуйтеСлужба Windows, я знаю об этом, но ограничения хостинга не позволяют мне сделать это.

Ответы [ 2 ]

5 голосов
/ 03 августа 2010

Ваше приложение должно создать и запустить поток.В момент создания потока HttpContext.Current должен быть доступен, сохранить соответствующую часть веб-адреса, которая важна, и либо передать конструктору вашего объекта, который упаковывает функциональность потоков, либо, если у вас нет собственного объекта, храните его в месте, где поток может получить к нему доступ.Вам нужно будет войти в критический раздел с помощью lock () {}, если вы используете последний подход.

1 голос
/ 03 августа 2010

Судя по вашим странным ограничениям хостинга (если серьезно, просто купите достойный сервер, избавит вас от многих проблем), вы начинаете тему со страницы ASP.NET. Просто введите URL-адрес при запуске цепочки и сохраните его в поле.

...