我需要一些 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.Web.Hosting.IIS7WorkerRequest.GetServerVariableInternal(String name) 在 System.Web.HttpRequest.AddServerVariableToCollection(String name) 在 System.Web.HttpRequest 的 System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)。 FillInServerVariablesCollection() 在 System.Web.HttpServerVarsCollection.Populate() 在 System.Web.HttpServerVarsCollection.Get(String name) 在 Elmah.ErrorLog.InferApplicationName(HttpContext context) 在 Elmah.ErrorLog.GetDefaultImpl(HttpContext context) 在 Elmah.ServiceContainer。 GetService(Type serviceType) at Elmah.ServiceCenter.GetService(Object context, Type serviceType) at Elmah.ErrorLog.GetDefault(HttpContext context) at Bis.Utilities.Log.ElmahErrorLog.TryLogError(Exception exeption) in D:\Users\A500535\Documents\Projecten\Biobank\Bis\src\Utilities\Log\ElmahErrorLog.cs:第 13 行