我想利用新方法来全局记录错误。我写了一个继承的类ExceptionLogger
并覆盖Log()
方法。然后将其注册为替代品。
public class TraceExceptionLogger : ExceptionLogger
{
public async override void Log(ExceptionLoggerContext context)
{
// This is always empty string
var content = await context.Request.Content.ReadAsStringAsync();
// This is almost always null
var actionContext = context.ExceptionContext.ActionContext;
}
}
我可以挖掘ExceptionLoggerContext
对象的属性来获取我需要的几乎所有内容,除了操作参数。确实有一个ActionContext
属性,但我只看到它为空并且这个维基页面指出ActionContext
and ControllerContext
几乎总是为空。
另外,我无法获取内容流,因为它的流在到达我的记录器之前已经被读取。所以我无法从请求的内容中获取任何已发布的 json。
有没有办法获取发布的数据HttpContext.Current
或者以其他方式?
好吧,看起来我可以通过读取 Request 对象上的 InputStream 来从 HttpContext 获取正文,如下所示:
string bodyText = string.Empty;
using (var sr = new StreamReader(HttpContext.Current.Request.InputStream))
{
sr.BaseStream.Seek(0, SeekOrigin.Begin);
bodyText = sr.ReadToEnd();
}
到目前为止,这段代码已经成功地获取了我发布的 json 数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)