刚开始写后端时,只是上传一些图片,文档之类的文件。最近需要上传视频,尤其是大型视频,动辄上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,运行,完美。。。
文章评论