
解决ASP.NET Core Mvc文件上传限制问题
发布日期:2021-05-09 05:13:22
浏览次数:16
分类:博客文章
本文共 1742 字,大约阅读时间需要 5 分钟。
一、简介
在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢?
二、设置上传文件大小
1.应用程序级别设置
我们需要在 ConfigureServices方法中添加如下代码,设置文件上传的大小限制为60 MB。
public void ConfigureServices(IServiceCollection services){ services.Configure(options => { options.MultipartBodyLengthLimit = 60000000; });}
2.Action级别设置
除了上面对全局进行设置外,我们也可以通过自定义Filter的方式,对单个Action进行控制,Filter代码如下:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public class RequestFormSizeLimitAttribute : Attribute, IAuthorizationFilter, IOrderedFilter { private readonly FormOptions _formOptions; public RequestFormSizeLimitAttribute(int valueCountLimit) { _formOptions = new FormOptions() { ValueCountLimit = valueCountLimit }; } public int Order { get; set; } public void OnAuthorization(AuthorizationFilterContext context) { var features = context.HttpContext.Features; var formFeature = features.Get(); if (formFeature == null || formFeature.Form == null) { // Request form has not been read yet, so set the limits features.Set (new FormFeature(context.HttpContext.Request, _formOptions)); } } }
因为ASP.NET Core MVC中,与之前版本不同的是具体功能被封装在了各种Feature(特征)中,HttpContext上下文只是能各个特征进行管理的容器。这个Filter中就只将Action拦截,对HttpContext中的FormFeature(负责表单提交功能)重新进行设置,从而达到限制具体Action上传文件大小的目的。
三、结语
本来感觉像是发现了一个文件上传的BUG,已经确认在1.0.1版本中已经进行了修复。在1.0.0版本中,如果Action没有设置一个IFromFile作为参数,那么Request.From.Files将不能访问并且报出异常。
GitHub: 如果觉还可以请Star下, 欢迎一起交流。
.NET Core 开源学习群:
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月06日 21时12分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
541【毕设课设】基于单片机电阻电感电容RLC测量仪系统
2019-03-15
568【毕设课设】基于单片机多路温度采集显示报警控制系统设计
2019-03-15
基于8086交通灯系统仿真设计(微机原理设计资料)
2019-03-15
解读域名管理之:域名注册机构介绍
2019-03-15
找中位数
2019-03-15
这些运维发展方向及系统运维技能都不了解,怎么能吃透Linux??
2019-03-15
自动化测试——UI自动化测试的痛点
2019-03-15
如何将萌推商品主图、属性图、详情图批量保存到电脑的方法
2019-03-15
2021年N1叉车司机模拟考试及N1叉车司机考试软件
2019-03-15
【奇淫巧技】Java动态代理(JDK和cglib)
2019-03-15
【Stimulsoft Reports.Net教程】使用DesignerFx
2019-03-15
攻防世界 Pwn 新手
2019-03-15
mybtis-plus 出现 Wrong namespace
2019-03-15
用户登陆的验证码的制作
2019-03-16
升级java11后,maven命令打包报错
2019-03-16
springboot redis key乱码
2019-03-16
Win10禁用自带的笔记本键盘
2019-03-16
insmod模块的几种常见错误
2019-03-16
写时复制集合 —— CopyOnWriteArrayList
2019-03-16