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