2016-07-15 215 views
3

我正在制作ASP.NET Core web应用程序,并且我通过JavaScript文件通过HttpContext上传PDF文件。所以,当我尝试在服务器端加载文件时,使用Request.Form.File,Form会抛出System.IO.InvalidDataException类型的异常。表格消息说:“多部分体长度限制16384超出”。我试图编辑web.config文件以增加限制,但消息总是相同的。 有什么我失踪或我在错误的一面?Request.Form抛出异常

谢谢。

+0

你尝试设置MultipartBodyLengthLimit内FormOptions? – sabkaraja

+0

http://stackoverflow.com/a/38360093/1184056 –

+0

您正在上传的文件的大小是多少? –

回答

2

定义这个属性:

[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<IFormFeature>(); 

     if (formFeature == null || formFeature.Form == null) 
     { 
      // Request form has not been read yet, so set the limits 
      features.Set<IFormFeature>(new FormFeature(context.HttpContext.Request, _formOptions)); 
     } 
    } 
} 

而这个属性添加到您的操作方法看看会发生什么:

[RequestFormSizeLimit(valueCountLimit: 2147483648)] 
[HttpPost] 
public IActionResult ActionMethod(...) 
{ 
    ... 
} 
+0

@Illuminati,这是他在上面写的习惯课。 – tylerjgarland