Web サーバーで実行されている非同期タスクにログインする Elmah が必要です。しかし、エラーをログに記録しようとすると、HttpContext のために失敗します。
var httpContext = HttpContext.Current;
Task.Factory.StartNew(() =>
{
HttpContext.Current = httpContext;
try
{
//Execute some code
}
catch (Exception ex)
{
//Generate some error for the user and log the error in Elmah
try
{
ErrorLog.GetDefault(HttpContext.Current).Log(new Error(ex));
}
catch(Exception ex)
{
}
}
});
タスクの進行状況を取得するために、いくつかのポーリング メカニズムを実装しました。現在、Elmah にはエラーが記録されていないため、解決が困難です。
また、パラメータとしてコンテキストを提供しても機能しません。
うまくいきません。期待される値が期待される範囲内にないことを示す ArgumentException が発生します。次のスタックトレースを使用:
System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal (Int32 errorCode、IntPtr errorInfo) で System.Web.Hosting.IIS7WorkerRequest.GetServerVariableInternal (文字列名) で System.Web.HttpRequest.AddServerVariableToCollection (文字列名) で System.Web.HttpRequest で。 Elmah.ErrorLog.InferApplicationName(HttpContext コンテキスト) の System.Web.HttpServerVarsCollection.Populate() の System.Web.HttpServerVarsCollection.Populate() で FillInServerVariablesCollection()。 D の Bi.Utilities.Log.ElmahErrorLog.TryLogError(例外例外) で Elmah.ErrorLog.GetDefault(HttpContext コンテキスト) で Elmah.ServiceCenter.GetService(オブジェクト コンテキスト、タイプ serviceType) で GetService(タイプ serviceType):\Users\A500535\Documents\Projecten\Biobank\Bis\src\Utilities\Log\ElmahErrorLog.cs:13行目