我正在使用ngResource
和Angular将文件上传到ASP.NET Web服务。
一切正常,直到我尝试超过一定大小(约50MB)的文件。在某个大小之后的某个地方,FromBody参数没有被绑定,我得到一个null
DocumentDTO对象引用。
任何想法如何解决?
在我的web.config中,我有以下设置:
maxAllowedContentLength="500000000"
和
maxRequestLength="200000"
在我的控制器中,我有:
[HttpPost, Route("{id:Guid}")]
public async Task<IHttpActionResult> Insert([FromUri]Guid id, [FromBody]DocumentDTO documentDTO)
{
//...
我的DocumentDTO
是:
public class DocumentDTO
{
[Required]
public Guid Id { get; set; }
[DisplayFormat(ConvertEmptyStringToNull = false)]
[MaxLength(250)]
public string FileName { get; set; }
[Required]
public string Content { get; set; }
[MaxLength(250)]
public string ContentType { get; set; }
}
在我的Angular控制器中,我有这段代码:
vm.document.$save(
data => {
notifications.success("The document has been uploaded to the repository.", "Upload Succeeded");
},
err => {
errorService.handleApiError(err, "document", "upload");
})
.finally(() => vm.loading = false);
通过在vm.document.content
上调用readAsArrayBuffer
来设置FileReader
值。
就像我说的:这在一定的文件大小下都能正常工作。问题是FileReader是否有限制并且没有正确设置文件内容,或者WebApi是否对模型绑定有限制?
答案 0 :(得分:-1)
请同时更新maxRequestLength。以下是2GB文件的示例。
<system.web>
<httpRuntime maxRequestLength="2097152" />
</system.web>