我的應用程序發送一些電子郵件,並且電子郵件中引用的圖像路徑需要根據用戶如何訪問發送電子郵件的頁面而有所不同。我使用的代碼的變化之前,沒有任何問題很多次,但是這是我第一次嘗試做它在MVC應用程序:ASP.NET MVC - HttpRequestWrapper.Url是否爲空?
var relImagePath = controllerContext.HttpContext.Response.ApplyAppPathModifier("~/Emails/Images");
var absImagePath = new Uri(controllerContext.HttpContext.Request.Url, relImagePath).AbsoluteUri;
第二行拋出,因爲HttpContext的一個NullReferenceException異常。 Request.Url爲空。怎麼可能?
編輯:我應該注意到,我在與處理請求的線程池線程分開的線程池線程中運行此代碼。如果我將這段代碼移回執行控制器動作的線程,那麼url就在那裏。現在,我已經訴諸於在同一個線程上執行代碼。
我懷疑你是正確的時間獲得HttpContext的時間。我會研究一下。不過,我也想對你們聯繫的文章發表評論,說我強烈反對它的整體情緒。對於長時間運行的任務使用線程池可能是阻止ASP.NET工作者隊列的一種可靠的方式,但對於許多短暫的「火災和遺忘」類型任務,線程池是最理想的工具,並創建一個無限數量其他線程幾乎不是一個好主意。 – Chris 2010-09-15 00:20:51