很长的一点,但有没有办法在ASP.NET中动态获取网站的URL(http://www.example.com),当没有HttpContext。当前可用。ASP.NET - 获取网站的URL没有HttpContext.Current(在后台线程中运行)
没有HttpContext的,因为代码是在后台线程运行*(但根据ASP.NET应用程序域)。我有一个后台进程发送邮件了,每天晚上,并且需要包括网络地址,但我不想硬编码,因为部署和测试(它改变了从http://localhost:12345到http://testing.example.com,然后http://www.example.com的现场直播)。
*请不要劝Windows服务,我知道这些,但托管限制,阻止我这样做。
谢谢!我想这样做,我只是担心,因为有可能有不同的URL来访问该网站。例如,某人可以在服务器上键入localhost来访问该站点,并且该地址将永久存储为localhost,包括发送的电子邮件中。对不起,我知道这听起来有点模糊,我只是担心这个东西,也许我太过于工程设计了。 – 2010-08-03 17:05:38
我明白这个问题。如果是localhost,那么它就是启动web应用程序的服务器本身的交互式用户。您可能会将线程启动代码放入Application_BeginRequest中,并且只在当前请求的地址不是localhost并且甚至可能不是内部地址(即:必须是完全限定的地址)时才启动线程。如果你这样做,你需要在线程启动并设置一个标志,并锁定标志读/写访问同步。 – David 2010-08-03 17:58:07
有趣的方法,这可能只是工作。谢谢! – 2010-08-04 11:08:51