Middleware 获取API拦截Request.Boby并修改值(netcore)
我添加了一个MIddleware, 可以拦截到Request.Body(是一个json,其中有一个key是 ProjectId), 调用方并不会传ProjectId给我,我想能在server端全局给ProjectId赋值 ,而不是每一个API方法里面都去赋值ProjectId
public class ApiRequestBase
{
public int ProjectId { get; set; }
public long Id { get; set; }
}
public async Task HandleBusiness(HttpContext context)
{
IHeaderDictionary dic = context.Request.Headers;
var originalRequestBody = context.Request.Body;
using (StreamReader reader = new StreamReader(context.Request.Body, Encoding.UTF8))
{
ApiRequestBase apirequest = JsonConvert.DeserializeObject<ApiRequestBase>(reader.ReadToEnd());
apirequest.ProjectId = 99;
}
}
问题是,我添加了这个MIddleware后, 现在所有的API 在[Frombody]收到的参数都是null了,我该如何把修改后的body继续在middleware中往后传,好像只要我添加了using (StreamReader reader = new StreamReader(context.Request.Body, Encoding.UTF8))这个代码,我全部的api 在frombody拿到的都是null ?