将ExceptionLoggerContext强制转换为HttpContext
本文关键字:HttpContext 转换 ExceptionLoggerContext | 更新日期: 2023-09-27 18:16:52
我已经编写了一个实现System.Web.Http.ExceptionHandling.ExceptionLogger
类的异常记录器。
我们有一个通用的异常日志记录服务,其中一个实现是针对RayGun的。它使用HttpContext.Current
,如下所示:https://github.com/MindscapeHQ/raygun4net/blob/master/Mindscape.Raygun4Net/RaygunClient.cs在线337上。
public override void Log(ExceptionLoggerContext context)
{
HttpContext.Current = ...;
ExceptionService.LogException(context.Exception);
}
是否可以转换/转换:System.Web.Http.ExceptionHandling.ExceptionLoggerContext
到System.Web.HttpContext
?
您可以执行以下
public override void Log(ExceptionLoggerContext context)
{
HttpContext httpContext = GetHttpContext(context.Request);
ExceptionService.LogException(context.Exception);
}
private static HttpContext GetHttpContext(HttpRequestMessage request)
{
HttpContextBase contextBase = GetHttpContextBase(request);
if (contextBase == null)
{
return null;
}
return contextBase.ApplicationInstance.Context;
}
private static HttpContextBase GetHttpContextBase(HttpRequestMessage request)
{
if (request == null)
{
return null;
}
object value;
if (!request.Properties.TryGetValue("MS_HttpContext", out value))
{
return null;
}
return value as HttpContextBase;
}
从这里复制
不可以强制转换,但可以使用的RequestContext
属性异常记录器上下文。