使用WebApi

时间:2017-03-01 12:51:45

标签: c# asp.net asp.net-web-api

我正在使用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是否对模型绑定有限制?

1 个答案:

答案 0 :(得分:-1)

请同时更新maxRequestLength。以下是2GB文件的示例。

<system.web>
  <httpRuntime maxRequestLength="2097152" />
</system.web>