我正在尝试将大文件从 Angular 9.0 前端上传到 Web Api .net core 3.1 后端。
我正在关注这个教程https://code-maze.com/upload-files-dot-net-core-angular/ https://code-maze.com/upload-files-dot-net-core-angular/。
在默认最大文件大小为 28.6 mb 的情况下,一切都可以正常工作,一旦超过此文件大小,我会收到以下 cors 错误:“从源 [localhost] 访问 [localhost] 处的 XMLHttpRequest 已被 CORS 策略阻止:否”请求的资源上存在“Access-Control-Allow-Origin”标头。从服务器返回。我还没有在 IIS 上尝试过,所以我在本地使用 Kestrel 时遇到了这些问题。
我的配置服务如下所示:
services.AddCors(options =>
{
options.AddPolicy("AllowLocalAngularWebClient",
policy => policy.WithOrigins("http://localhost:4200").WithHeaders().AllowAnyHeader().AllowAnyMethod());
});
我的配置如下所示:
app.UseCors("AllowLocalAngularWebClient");
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider
(Path.Combine(Directory.GetCurrentDirectory(), @"uploads")),
RequestPath = new PathString("/uploads")
});
我的控制器看起来像这样:
[EnableCors("AllowLocalAngularWebClient")]
[DisableRequestSizeLimit]
我遇到过一些博客说我需要配置 kestrel,所以我在 BuildWebHost 中尝试过:
.ConfigureKestrel((context, options) =>
{
options.Limits.MaxRequestBodySize = 52428800; //or null for unlimited!
})
在我的控制器上我也尝试过:
[DisableRequestSizeLimit]
and
[RequestSizeLimit(52428800)]
但文件超过 28.6mb 时仍然出现 cors 错误
我不知道这是cors错误还是本地IIS/kestrel Visual Studio错误。
任何帮助将不胜感激。