解决ASP.NET Core Mvc文件上传限制问题实例
一、简介
在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢?
二、设置上传文件大小
1.应用程序级别设置
我们需要在 ConfigureServices方法中添加如下代码,设置文件上传的大小限制为60 MB。
public void ConfigureServices(IServiceCollection services)
{
servicesConfigure<FormOptions>(options =>
{
optionsMultipartBodyLengthLimit = 60000000;
});
}
2.Action级别设置
除了上面对全局进行设置外,我们也可以通过自定义Filter的方式,对单个Action进行控制,Filter代码如下:
[AttributeUsage(AttributeTargetsClass | AttributeTargetsMethod, 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 = contextHttpContextFeatures;
var formFeature = featuresGet<IFormFeature>();
if (formFeature == null || formFeatureForm == null)
{
// Request form has not been read yet, so set the limits
featuresSet<IFormFeature>(new FormFeature(contextHttpContextRequest, _formOptions));
}
}
}
因为ASP.NET Core MVC中,与之前版本不同的是具体功能被封装在了各种Feature(特征)中,HttpContext上下文只是能各个特征进行管理的容器。这个Filter中就只将Action拦截,对HttpContext中的FormFeature(负责表单提交功能)重新进行设置,从而达到限制具体Action上传文件大小的目的。
三、结语
本来感觉像是发现了一个文件上传的BUG,已经确认在1.0.1版本中已经进行了修复。在1.0.0版本中,如果Action没有设置一个IFromFile作为参数,那么Request.From.Files将不能访问并且报出异常。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
.NET Core 处理 WebAPI JSON 返回烦人的null为空
这篇文章主要介绍了.NET Core 处理 WebAPI JSON 返回烦人的null为空,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01
.NET 如何使用 OpenTelemetry metrics 监控应用程序指标
这篇文章主要介绍了.NET 使用 OpenTelemetry metrics 监控应用程序指标,通过代码演示了如何通过 OpenTelemetry 把 Metrics 的数据发送到 Prometheus 里进行查询与展示,然后又演示了自定义相关指标来满足业务数据指标的监控,需要的朋友可以参考下2024-06-06
在asp.net中操作sql server数据库的一些小技巧
在asp.net中操作sql server数据库的一些小技巧...2006-09-09
Ajax Control Toolkit BalloonPopup的使用实例及效果
Ajax Control Toolkit 工具包的简介及获取方式等,BalloonPopup 控件可以显示一个弹出层,里面可以包含很多内容。2013-02-02


最新评论