忽略StreamReader的HttpRequest字段



我想忽略StreamReader.ReadToEndAsync()的HttpRequest中的一些字段因为如果我不能阻止它会抛出一个大日志

例如:我的控制器

[HttpPost, DisableRequestSizeLimit] 
public async Task<IActionResult> UploadFile([FromForm] MyModel ysisFile)
{
//bla bla
}

My request model

public class MyModel
{
public string DocumentId { get; set; }
public string DocumentType { get; set; }
// i want to ignore this property
public IFormFile File { get; set; }
}

我的日志格式化器

private async Task<string> FormatRequest(HttpRequest request)
{
// Leave the body open so the next middleware can read it.
using var reader = new StreamReader(
request.Body,
encoding: Encoding.UTF8,
detectEncodingFromByteOrderMarks: false,
leaveOpen: true);
var body = await reader.ReadToEndAsync();
// Do some processing with body…
var formattedRequest = $"{request.Scheme} {request.Host}{request.Path} {request.QueryString} {body}";
// Reset the request body stream position so the next middleware can read it
request.Body.Position = 0;
return formattedRequest;
}

我不能完全按照我的想法解决这个问题。但是通过完全删除Body信息,问题就解决了:)

var formattedRequest = $"{request.Scheme} {request.Host}{request.Path} {request.QueryString}";

最新更新