码字,杂谈

如何突破.NET Core 2.2的上传大小限制

刚开始写后端时,只是上传一些图片,文档之类的文件。最近需要上传视频,尤其是大型视频,动辄上G的文件,我开始也是直接上传,然后前端直接连接错误,然而后端输出没有任何反应,有点懵,初步判断是文件超限,于是上网查询资料,发现文件大小限制在30M左右,自己测试大概在27M多一点,我这里30M的文件上传也失败。。。

修改Startup中ConfigureServices的配置

跑题了,回到正题,习惯性的去stackoverflow寻找答案,看到这样的答案:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    // 这里是我看到的解决方案,我还将bodyLengthLimit从 int.MaxValue 变成了 long.MaxValue,已达到超大文件的效果。
    services.Configure<FormOptions>(options =>
    {
        options.ValueLengthLimit = int.MaxValue;
        options.MultipartBodyLengthLimit = long.MaxValue;
        options.MultipartHeadersLengthLimit = int.MaxValue;
    });
}

这个答案的标星数很多,而且评论很完美,统一的已解决。。。我满怀期待的重新测试,然后发现50M的文件依然不能上传。

我不清楚是我的配置问题,还是其他问题,有需要的朋友可以自己拿去测试一下,应该是一种解决方案,只不过不适合我。

配置web.config

于是乎,去csdn找答案,很快发现了一个简单配置方法,在项目中添加web.config文件,一种xml格式配置文件,根据说明,他似乎可以放在项目中的任何地方,不过一般我还是习惯还是放在根目录下。

创建完毕后,添加如下内容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 1 GB -->
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

这个方案对我是OK的,目前上传小于1G的文件都是可以的,然后我尝试将数字改成4294967296,也就是4G,上传超过2G的文件依然是OK的,这个方案对我很友好。有需要的朋友可以拿去。

题外话

昨天配置了公共服务机,修改了IIS Express的配置,然后当我把上面的web.config文件放到项目中后,服务机可以正常访问192.168.1.7:44342,其他电脑通通都报503。。。郁闷一下。

然后,根据修改IIS Express的思路,我把web.config删了,将里面的内容放在了项目的.vs文件夹中的配置文件里,也就是.vs/config/applicationhost.config文件,找到对应的<system.webServer>节点,把上面的内容添加进去。

重启IIS服务器,管理员启动vs,运行,完美。。。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注