我有一個MVC 2應用程序,它在Global.asax的Application_Start期間啓動了一個System.Timers.Timer對象。計時器需要做的其中一件事就是當用戶在工作隊列中查看項目時,爲用戶生成每日電子郵件。在電子郵件裏面有一個鏈接返回到要查看的項目。在運行global.asax的Timer中生成客戶端URL
在我已經在不同的控制器操作運行的代碼,我用這樣的代碼來生成可通過電子郵件發送給用戶的URL:
UriBuilder builder = new UriBuilder(Request.Url);
builder.Path = Url.RouteUrl("ReviewDetails", new { id = reviewId });
return builder.ToString();
我願做我的定時器的經過法中的一樣在global.asax中,但是在那時沒有HttpContext,所以我無法以編程方式確定URL。
我認爲唯一的解決方案是將網站的根目錄(例如:http://intranet.domain.com/MyApp)在web.config中,然後用它來構建URL,就像這樣:
string url = string.Concat(ConfigurationManager.AppSettings["SiteRoot"], "/Review/", reviewId.ToString());
我把這個出在雲中查看當HttpContext不可用時是否有更好的解決方案以編程方式爲客戶端生成URL。
是的,完美的作品。 \t \t保護無效的Application_Start() \t \t { \t \t \t _siteUri = HttpContext.Current.Request.Url; \t \t} – 2010-10-28 17:58:23
您應該可以在沒有HttpContext.Current部分的情況下訪問。請求對象可以在Application_Start中直接訪問 – Sruly 2010-10-28 19:31:43