C# 无法访问已释放的对象CopyToASync(毫秒)

C# 无法访问已释放的对象CopyToASync(毫秒),c#,asp.net-mvc,C#,Asp.net Mvc,我刚打了个电话,我有请求和回复。我有一种方法,在这种方法中,我试图在我的数据库中记录请求和休息主体,因为我只是在构建req和响应主体 internal static async Task<string> GetBodyForLoggingAsync(this HttpRequestMessage request) { return await GetBodyForLoggingAsync(request.Content); } private static async Ta

我刚打了个电话,我有请求和回复。我有一种方法,在这种方法中,我试图在我的数据库中记录请求和休息主体,因为我只是在构建req和响应主体

internal static async Task<string> GetBodyForLoggingAsync(this HttpRequestMessage request)
{
    return await GetBodyForLoggingAsync(request.Content);
}

private static async Task<string> GetBodyForLoggingAsync(HttpContent content)
{
    if (content == null)
    {
        return null;
    }

    string requestBody = null;

    var contentType = content.Headers.ContentType;

    if (contentType == null || _contentTypesWhereBodyIsLogged.Contains(contentType.MediaType))
    {
        try
        {

            Debug.WriteLine(" ---- GETTING BODY CONTENT");

            using (var ms = new MemoryStream())
            {
                try
                {
                    await content.CopyToAsync(ms).ConfigureAwait(false);
                    ms.Seek(0, SeekOrigin.Begin);
                    using (var sr = new StreamReader(ms))
                    {
                        requestBody = sr.ReadToEnd();
                    }
                }
                catch (Exception ex)
                {
                    var test = ex;
                }
            }
        }
        catch (Exception ex)
        {
            var test = ex;
        }
    }
}
内部静态异步任务GetBodyForLoggingAsync(此HttpRequestMessage请求)
{
返回等待GetBodyForLoggingAsync(request.Content);
}
专用静态异步任务GetBodyForLoggingAsync(HttpContent)
{
if(content==null)
{
返回null;
}
字符串requestBody=null;
var contentType=content.Headers.contentType;
if(contentType==null | | | | u contenttypeswwherebodyislogged.Contains(contentType.MediaType))
{
尝试
{
Debug.WriteLine(“----获取正文内容”);
使用(var ms=new MemoryStream())
{
尝试
{
wait content.CopyToAsync(ms.configurewait(false);
Seek女士(0,SeekOrigin.Begin);
使用(var sr=新的StreamReader(ms))
{
requestBody=sr.ReadToEnd();
}
}
捕获(例外情况除外)
{
var检验=ex;
}
}
}
捕获(例外情况除外)
{
var检验=ex;
}
}
}

我在content.CopyToAsync()方法中遇到错误,无法访问POST和修补程序调用中的已释放对象,如果我从邮递员处执行相同的调用,使其获取,则不会出现此错误。我知道get调用中没有body的用法,但我只是在检查。

很难告诉上下文您正在处理中的HttpContent。您可以发布堆栈跟踪吗?如果我不得不猜测的话,您的日志记录是在框架处理了请求和响应之后发生的。如果是这种情况,您希望将中间件进一步向上移动。对其进行响应并记录日志,这仅在请求时发生。这些问题可能重复:没有我的代码在我尝试复制或读取任何带有disposed object错误的内容时抛出错误。对此有任何更新吗?