很長的一點,但有沒有辦法在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