当前位置 : 主页 > 网络推广 > seo >

错误处理 – 从全局错误处理程序检索Request.Content的正确方法

来源:互联网 收集:自由互联 发布时间:2021-06-16
我已注册一个全局异常处理程序,它会触发并包含我需要的所有信息,但Request.Content除外,它总是为空的…我需要在调试时传入的值… Public class MyExceptionLogger : ExceptionLogger { public override v
我已注册一个全局异常处理程序,它会触发并包含我需要的所有信息,但Request.Content除外,它总是为空的…我需要在调试时传入的值…

Public class MyExceptionLogger : ExceptionLogger
    {
        public override void Log(ExceptionLoggerContext context)
        {

            try
            {
                 ... other code

            var methodName = context.Request.Method.ToString();
            var errorUri = context.Request.RequestUri.ToString();
            var errorMessage = context.Exception.Message;
            var errorStackTrace = context.Exception.StackTrace.ToString();

            var payload = context.Request.Content.ReadAsStringAsync().Result;

            .....  other code  

            }

       }
   }

从全局错误处理程序检索Request.Content的正确方法是什么?在上面的代码中,Content属性已经被模型绑定器读取,因此始终为空.

如何从异常中始终获取已发布的正文?

我应该在自定义MessageHandler中检索并保存已发布的正文吗?

谢谢
格雷格

在实验中读取自定义消息处理程序中的request.Content的缓冲区..如果我用这段代码读取它:

var payload = context.Request.Content.ReadAsStringAsync().Result;

并且没有它…当模型粘合剂读取缓冲区时,缓冲区将不会被清空,因为它现在总是在我的异常记录器中…我不知道这是设计还是什么,但它令人生气!

网友评论