解决ASP.NET Core Mvc文件上传限制问题实例

 更新时间:2016年11月30日 08:42:29   作者:YOYOFx  
本篇文章主要介绍了解决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为空

    这篇文章主要介绍了.NET Core 处理 WebAPI JSON 返回烦人的null为空,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • .NET 如何使用 OpenTelemetry metrics 监控应用程序指标

    .NET 如何使用 OpenTelemetry metrics 监控应用程序指标

    这篇文章主要介绍了.NET 使用 OpenTelemetry metrics 监控应用程序指标,通过代码演示了如何通过 OpenTelemetry 把 Metrics 的数据发送到 Prometheus 里进行查询与展示,然后又演示了自定义相关指标来满足业务数据指标的监控,需要的朋友可以参考下
    2024-06-06
  • C#中使用SQLite数据库的方法介绍

    C#中使用SQLite数据库的方法介绍

    SQLite是一个开源的轻量级的桌面型数据库,它将几乎所有数据库要素(包括定义、表、索引和数据本身)都保存在一个单一的文件中。SQLite用C编写实现,它在内存消耗、文件体积、操作性能、简单性方面都有不错的表现
    2012-01-01
  • 在asp.net中操作sql server数据库的一些小技巧

    在asp.net中操作sql server数据库的一些小技巧

    在asp.net中操作sql server数据库的一些小技巧...
    2006-09-09
  • .Net Core中使用Grpc的方法

    .Net Core中使用Grpc的方法

    这篇文章主要介绍了.Net Core中使用Grpc的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 浅谈ASP.NETCore统一处理404错误都有哪些方式

    浅谈ASP.NETCore统一处理404错误都有哪些方式

    本文主要介绍了ASP.NETCore统一处理404错误都有哪些方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • .NET中的repeater简介及分页效果

    .NET中的repeater简介及分页效果

    Repeater控件是一个数据绑定容器控件,它能够生成各个项的列表,并可以使用模板定义网页上各个项的布局。本文对此进行详细介绍,下面跟着小编一起来看下吧
    2017-02-02
  • ASP.NET Core中的Razor页面实现路由功能

    ASP.NET Core中的Razor页面实现路由功能

    本文详细讲解了ASP.NET Core中的Razor页面实现路由功能的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Ajax Control Toolkit BalloonPopup的使用实例及效果

    Ajax Control Toolkit BalloonPopup的使用实例及效果

    Ajax Control Toolkit 工具包的简介及获取方式等,BalloonPopup 控件可以显示一个弹出层,里面可以包含很多内容。
    2013-02-02
  • .NET Core配置连接字符串和获取数据库上下文实例

    .NET Core配置连接字符串和获取数据库上下文实例

    这篇文章介绍了.NET Core配置连接字符串和获取数据库上下文实例的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01

最新评论