ASP.NET - 获取没有HttpContext.Current的网站URL(在后台线程中运行)

时间:2010-08-03 16:44:49

标签: asp.net url backgroundworker httpcontext

有点远,但是当没有HttpContext.Current可用时,ASP.NET中有一种方法可以动态获取网站的URL(http://www.example.com)。

没有HttpContext,因为代码在后台线程*中运行(但在ASP.NET AppDomain下)。我有一个后台流程,每天晚上都会发送电子邮件,并且需要包含网址,但我不想因为部署和测试而对其进行硬编码(它从http://localhost:12345更改为http://testing.example.com然后到http://www.example.com获取实时网站。)

*请不要建议Windows服务,我知道这些,但托管限制阻止我这样做。

2 个答案:

答案 0 :(得分:5)

您的应用必须构建并启动该线程。在创建线程时,HttpContext.Current应该可用,存储重要的Web地址的相关部分,并传递给包装线程功能的对象的构造函数,或者如果没有自定义对象,将其存储在线程可以访问它的位置。如果使用后一种方法,则需要使用lock(){}输入一个关键部分。

答案 1 :(得分:1)

根据您奇怪的托管限制来判断(严重的是,只需购买一台体面的服务器,省去了很多麻烦)您从ASP.NET页面启动线程。只需在启动线程时输入URL并将其存储在字段中。