Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 柱体get';在策略授权中访问后,它将丢失_C#_Asp.net Core_Authorization - Fatal编程技术网

C# 柱体get';在策略授权中访问后,它将丢失

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

因此,我在asp.net核心应用程序中有一个策略授权。对于一个特定的策略,我需要访问http post请求的主体。所以我这样读身体:

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的流的位置