サイトの特定のページへのリンクを含むメールを送信する静的クラスがあります。そのリンクは、次のコードで動的に生成されます。
UrlHelper urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
string url = urlHelper.Action("Details", "Product", new { id = ticketId }, "http");
問題は、作成日と現在の日付を定期的に比較して、それらのメールを自動的に送信するサービスもあるということです。もちろん、コードはクラッシュし、HttpContext.Current
null と表示されます (リクエストではないため)。
私はそのようないくつかのことを試しました:
private static System.Web.Routing.RequestContext requestContext;
private static System.Web.Routing.RequestContext RequestContext {
get
{
if(requestContext == null)
requestContext = HttpContext.Current.Request.RequestContext;
return requestContext;
}
}
しかし、UrlHelper.Action で 2 回目の RequestContext が必要になると、Null Reference Exception と言ってクラッシュします。
サービスを介してメールメソッドを呼び出すときに、UrlHelper または HttpContext を保存/記憶/渡してアクセスできませんでした。