【发布时间】:2019-10-18 23:20:08
【问题描述】:
我有 ASP.NET Core WebApi 应用程序,需要上传非常大的文件。我已启用 JWT Auth/Authz
services.AddAuthentication(cfg =>
{
cfg.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
cfg.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, cfg =>
{ .. }
令牌的 TTL 为 2 分钟。
然后我在我的控制器中有动作
public async Task<IActionResult> Add(IFormFile file)
{
if (file.Length.ToMegabytes() > 500)
{
throw new BadRequestException(nameof(file), "File size should not exceed 500 MB");
}
}
在虚拟主机中配置
.UseKestrel(options =>
{
options.Limits.MaxRequestBodySize = null;
})
当我上传一个大文件 (~1Gb) 时,它需要很长时间,然后在我采取行动之前返回 401。
如何在文件上传前检查该文件的大小无效?因为上传需要超过 2 分钟的时间,结果我会得到 401
【问题讨论】:
-
这不是重复的,因为我问的是 abiut asp.net core webapi 但不是 asp.net 和 jquery
-
afaik,您无法在文件上传之前进行适当的检查,因为您需要上传文件才能让服务器知道文件有多大。
-
但我的令牌将在所有检查之前过期。如何在不更改令牌生命周期的情况下处理它
-
我认为主要思想在任何类型的框架或语言之间都没有改变,您应该尝试先在客户端进行检查
标签: c# asp.net-core asp.net-web-api