C# 柱体get';在策略授权中访问后,它将丢失
因此,我在asp.net核心应用程序中有一个策略授权。对于一个特定的策略,我需要访问http post请求的主体。所以我这样读身体:C# 柱体get';在策略授权中访问后,它将丢失,c#,asp.net-core,authorization,C#,Asp.net Core,Authorization,因此,我在asp.net核心应用程序中有一个策略授权。对于一个特定的策略,我需要访问http post请求的主体。所以我这样读身体: protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessRequirement requirement) { if (context.Resource is AuthorizationFilterContext aut
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, AccessRequirement requirement)
{
if (context.Resource is AuthorizationFilterContext authContext)
{
using (var stream = new StreamReader(authContext.HttpContext.Request.Body)
{
dynamic body = stream.ReadToEnd();
// do more stuff
}
return Task.CompletedTask;
}
到目前为止,一切都很好,但是,在控制器本身中,主体是空的。我猜是因为流已经被读取了?如何重置流
大摇大摆地告诉我
{
"": [
"A non-empty request body is required."
]
}
您需要添加
stream.Seek(0,SeekOrigin.Begin)代码>我试过了,但在尝试添加authContext.HttpRequest.Request.EnableRewind()的using语句之前,它表示不支持该操作(引发异常)代码>默认情况下,您无法更改指向Request.Body的流的位置