angular - webapi 核心无法上传被 cors 策略阻止的大文件

标签 angular asp.net-core file-upload cors

我正在尝试将大文件从 Angular 9.0 前端上传到 Web Api .net core 3.1 后端。 我正在学习本教程 https://code-maze.com/upload-files-dot-net-core-angular/ . 在默认最大文件大小为 28.6 MB 的情况下,一切都完美无缺,一旦超过此文件大小,我就会收到以下 cors 错误:'Access to XMLHttpRequest at [localhost] from origin [localhost] has been blocked by CORS policy: No请求的资源上存在“Access-Control-Allow-Origin” header 。从服务器返回。我还没有在 IIS 上尝试过,所以我在本地使用 Kestrel 遇到了这些问题。

我的 ConfigureServices 看起来像这样:

 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")
            });

我的 Controller 看起来像这样:

[EnableCors("AllowLocalAngularWebClient")]
[DisableRequestSizeLimit]

我看到一些博客说我需要配置 kestrel,所以我在 BuildWebHost 中尝试了这个:

.ConfigureKestrel((context, options) =>
                {
                    options.Limits.MaxRequestBodySize = 52428800; //or null for unlimited!
                })

同样在我的 Controller 上,我已经尝试了这两种方法:

 [DisableRequestSizeLimit]

[RequestSizeLimit(52428800)]

但是对于超过 28.6mb 的文件,我仍然会遇到 cors 错误

我不知道这是cors错误还是本地IIS/kestrel visual studio错误。

如有任何帮助,我们将不胜感激。

最佳答案

我在剥离我的整个项目后发现了这个问题,并想分享这个以防其他人遇到同样的问题。您需要将 launchSettings.json 中的 commandName 选项设置为“项目”,以便直接在命令行上使用 .NET CLI 执行它。如果 commandName 设置为“IISExpress”,上传限制为 28.6 mb。

关于angular - webapi 核心无法上传被 cors 策略阻止的大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60617821/

相关文章:

Angular Lazy Loading(该模块尚未导入到您的模块中)

javascript - 针对数字、字母或其他组的关键事件过滤

css - 如何将颜色代码转换为实际颜色

asp.net-core - 从 Swagger 生成 .NET 客户端

java - 如何使用 URLConnection 上传 WAV 文件

java - PrimeFaces 3.0.M4 文件上传的另一个困难

Angular - 在路由器事件中获取组件实例

azure - 使用 VS 2019 将 .NET Core 3.1 Web 应用程序发布到 Azure 应用服务 Linux,并显示欢迎屏幕

c# - 从数据库流式传输数据 - ASP.NET Core & SqlDataReader.GetStream()

angular - Agular2 + typescript + 文件上传