Как разрешить URL-адрес приложения из фонового потока в ASP.NET MVC? - PullRequest
6 голосов
/ 10 августа 2011

Приложение разбивается на две темы;основное веб-приложение и вторичный поток, используемый для асинхронной обработки событий.Вторичный поток получает событие, когда ему необходимо отправить электронное письмо с полным URL-адресом основного приложения (плюс дополнительные аргументы маршрута) внутри него.

Например.http://Server.com/App/RouteData?AdditionalArguments

Конечно, фоновый поток не может позволить себе роскошь использовать HttpContext.Current для разрешения URL-адреса, потому что нет запроса.Нет HttpRequest, нет HttpContext ...

Я обнаружил, что большинство методов ASP.NET (даже с MVC), используемых для создания URL-адресов, полагаются на HttpContext.Существует ли способ создать полностью определенный URL-адрес приложения в ASP.NET без использования HttpContext или какого-либо из его производных?

Я ищу поточно-безопасный метод, например:

UrlHelper.GetApplicationtUrl()

Есть идеи?Ваши предложения очень ценятся.

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

У меня была именно эта проблема.В итоге я сохранил URL в файле web.config.Я сделал мой так:

<appSettings>
  <!-- Urls -->
  <add key="AppDomain" value="http://localhost:1273/" />
  <add key="ConfirmUrl" value="http://localhost:1273/Auth/Confirm/?code={0}" />
</appSettings>

и назвал это так в слое обслуживания:

string confirmUrl = string.Format(ConfigurationManager.AppSettings["ConfirmUrl"], confirmCode);
0 голосов
/ 10 августа 2011

Если вы не можете просто использовать файл конфигурации, при создании потока используйте делегат ThreadStart для предоставления базовой информации, необходимой для нового потока.

...