Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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
如何在使用ASP.NET Core上载文件之前验证请求_Asp.net_.net_Asp.net Core - Fatal编程技术网

如何在使用ASP.NET Core上载文件之前验证请求

如何在使用ASP.NET Core上载文件之前验证请求,asp.net,.net,asp.net-core,Asp.net,.net,Asp.net Core,我有一个上传文件的代码。 我的问题是AuthorizationCheck只有在上传文件后才会触发。 如果文件大于20MB,则根本不会触发AuthorizationCheck,请求将返回404。 在发送文件steam之前,是否可以验证请求头? 如果请求未经授权,则应阻止文件上载到服务器。 另外,也不清楚为什么当我上传一个大文件时,它会被完全上传,只有404被返回 [RequestSizeLimit(21_000_000)] [Authorize(Po

我有一个上传文件的代码。 我的问题是AuthorizationCheck只有在上传文件后才会触发。 如果文件大于20MB,则根本不会触发AuthorizationCheck,请求将返回404。 在发送文件steam之前,是否可以验证请求头? 如果请求未经授权,则应阻止文件上载到服务器。 另外,也不清楚为什么当我上传一个大文件时,它会被完全上传,只有404被返回

            [RequestSizeLimit(21_000_000)]
            [Authorize(Policy = "AuthorizationCheck")]
            public async Task<IActionResult> Upload(IFormFile file)
            {
    
                using (var stream = file.OpenReadStream())
                {
                    await StoreFileAsync(stream);
                }
             }
[RequestSizeLimit(21_000_000)]
[授权(Policy=“AuthorizationCheck”)]
公共异步任务上载(IFormFile)
{
使用(var stream=file.OpenReadStream())
{
等待StoreFileAsync(流);
}
}
[RequestSizeLimit(21_000_000)]
限制您的重新请求不能超过20MB,您可以使用
[DisableRequestSizeLimit]

此外,IIS还施加了一个限制,默认情况下为30MB。当超过此大小限制时,IIS本身会生成404响应。要更改IIS的限制,您应该自定义
Web.configure

有关更多详细信息,请参阅

更新a

您可以通过以下方式访问请求标头:


谢谢,但我不在乎要求的尺寸。问题是关于请求头的。不幸的是,您的回答不起作用。只有在上传文件后才会触发中间件。如果一个大文件超过了大小限制,则根本不会启动中间件。我不想在文件上传之前阻止它,而不是之后。
app.Use(async (context, next) =>
{
    var header = context.Request.Headers["XXX"];

    //do something
    
    await next();
});