2016-07-15 94 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