这个问题挺奇怪的,明明就是文件过大的问题,却出现了跨域的错误,搞不懂,有了解的大佬请指教。
但问题还是解决了,其实就是Nginx默认上传大小限制为1M,如果超出了,则出现跨域的错误。
一、自定义Nginx上传文件大小限制
那么如何自定义Nginx上传大小限制呢?其实在Nginx的config文件中,设置下client_max_body_size就好了,如下:
server { listen 443 ssl; server_name www.baidu.com; client_max_body_size 100m;//设置一下这里就好了,100m为自己想限制的大小 }
当然,除了Nginx之外,还要检查以下几个地方的限制大小
二、自定义Asp.Net Core Kestrel的上传文件大小限制
在Program.cs中,配置以下代码:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureWebHostDefaults(webBuilder => {
//配置以下代码即可 webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 5242880 * 20;//100MB }); webBuilder.UseStartup<Startup>(); });
三、自定义IIS的上传文件大小限制
(1)可以手动在项目根目录下的web.config文件中的configuration节点下增加以下节点
<system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="104857600" /> </requestFiltering> </security> </system.webServer>
(2)也可以通过IIS直接进行配置
四、自定义应用程序上传文件大小限制
services.Configure<FormOptions>(x => {//应用程序设置,超出设置范围会报InvalidDataException异常信息 x.MultipartBodyLengthLimit = int.MaxValue; x.ValueLengthLimit = int.MaxValue; });
好了,以上就是Asp.Net Core 3.1上传文件出现跨域时的解决办法。当然,如果您的程序真的就是跨域了,那就老老实实先配置好跨域吧^_^。