有没有办法确保 HTTP 请求正文可以加载到内存中以用于可能的多个读取请求?
Is there a way to ensure the HTTP request body can be loaded into memory for possible multiple read requests?
有没有办法保证HTTP请求体可以加载到内存中?有多个中间件将使用相同的 HTTP 请求主体在多个级别记录。
我记得在 .Net Framework 4.6 中做过以下操作
await request.Content.LoadIntoBufferAsync();
/// *** Method snapshot from HttpContent - System.Net.Http library ***
/// <summary>Serialize the HTTP content to a memory buffer as an asynchronous operation.</summary>
/// <returns>The task object representing the asynchronous operation.</returns>
public Task LoadIntoBufferAsync()
{
return this.LoadIntoBufferAsync((long) int.MaxValue);
}
谁能帮我找到 .Net Core 中的类似行为?
编辑
-- 我认为这里的正确答案是使用 EnableBuffering,但我无法弄清楚我应该为 EnableBuffering 使用哪种重载方法?
public static void EnableBuffering(this HttpRequest request)
{
BufferingHelper.EnableRewind(request);
}
public static void EnableBuffering(this HttpRequest request, int bufferThreshold)
{
BufferingHelper.EnableRewind(request, bufferThreshold);
}
public static void EnableBuffering(this HttpRequest request, long bufferLimit)
{
BufferingHelper.EnableRewind(request, bufferLimit: bufferLimit);
}
我们应用程序中 HTTP 请求的大小从 50kb 到 300mb 不等。
对于asp.net核心2.x你可以使用:
HttpContext.Request.EnableRewind();
对于asp.net核心3.x你可以使用:
HttpContext.Request.EnableBuffering();
该方法确保可以多次读取请求正文。通常在内存中缓冲请求体:
有没有办法保证HTTP请求体可以加载到内存中?有多个中间件将使用相同的 HTTP 请求主体在多个级别记录。
我记得在 .Net Framework 4.6 中做过以下操作
await request.Content.LoadIntoBufferAsync();
/// *** Method snapshot from HttpContent - System.Net.Http library ***
/// <summary>Serialize the HTTP content to a memory buffer as an asynchronous operation.</summary>
/// <returns>The task object representing the asynchronous operation.</returns>
public Task LoadIntoBufferAsync()
{
return this.LoadIntoBufferAsync((long) int.MaxValue);
}
谁能帮我找到 .Net Core 中的类似行为?
编辑
-- 我认为这里的正确答案是使用 EnableBuffering,但我无法弄清楚我应该为 EnableBuffering 使用哪种重载方法?
public static void EnableBuffering(this HttpRequest request)
{
BufferingHelper.EnableRewind(request);
}
public static void EnableBuffering(this HttpRequest request, int bufferThreshold)
{
BufferingHelper.EnableRewind(request, bufferThreshold);
}
public static void EnableBuffering(this HttpRequest request, long bufferLimit)
{
BufferingHelper.EnableRewind(request, bufferLimit: bufferLimit);
}
我们应用程序中 HTTP 请求的大小从 50kb 到 300mb 不等。
对于asp.net核心2.x你可以使用:
HttpContext.Request.EnableRewind();
对于asp.net核心3.x你可以使用:
HttpContext.Request.EnableBuffering();
该方法确保可以多次读取请求正文。通常在内存中缓冲请求体: