【发布时间】:2017-11-23 11:09:01
【问题描述】:
以下是我在 WebApi .Net Core 2 项目中的 ActionFilter:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class RequestLoggingAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
var request = actionContext.HttpContext.Request;
var route = request.Path.HasValue ? request.Path.Value : "";
var requestHeader = request.Headers.Aggregate("", (current, header) => current + $"{header.Key}: {header.Value}{Environment.NewLine}");
request.EnableRewind();
var requestBody = new StreamReader(request.Body).ReadToEnd();
}
}
requestHeader 具有正确的值并且没关系,但requestBody 始终为空。
我通过向操作发送具有以下正文的请求来测试它。
[
{
"TrackingCode": "96003445",
"Description": "",
"InnerMessage": "",
"Status": 11
},
{
"TrackingCode": "96003840",
"Description": "",
"InnerMessage": "Inner message",
"Status": 11
}
]
如何在 WebApi Core 2 ActionFilter 中获取请求正文?
【问题讨论】:
-
检查流中的位置,看看是否需要重置为0
标签: asp.net-web-api asp.net-core asp.net-core-webapi .net-core-2.0