将大型json数据发送到breezecontroller失败

时间:2015-02-16 16:06:42

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

我正在使用breezejs在Web应用程序上处理我的实体。

具体来说,我从Angular HotTowel模板开始。

我遇到的问题是我发送了一个大型的json对象数组(长度约为17000),所以在我的控制器上我在参数上获取null以接收这些信息。

当我尝试向5000个对象的数组发送较少的数据时,控制器参数会正确设置对象。

我的控制器

[BreezeController]
public class SoftProductsController : ApiController
{
    private readonly EFContextProvider<Context> contextProvider = new EFContextProvider<Context>();

    [HttpGet]
    public string Metadata()
    {
        return this.contextProvider.Metadata();
    }

    [HttpPost]
    public SaveResult SaveChanges(JObject saveBundle)
    {
        //Here saveBundle is NULL
        return this.contextProvider.SaveChanges(saveBundle);

    }
}

当使用大型json数据时,这可能与WebApi上的某些json反序列化有关吗?

我尝试在web.congif上设置此选项但没有成功

<appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="20000"/>
</appSettings>

我正在使用.NET 4.5

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我的问题是ASP.NET拥有的requestLenght的默认限制。 增加web.config的限制允许breeze发布大数据。 (默认大小为4096 KB)

<system.web>
    <httpRuntime targetFramework="4.5" maxRequestLength="5120" />
</system.web>

https://msdn.microsoft.com/en-us/library/system.web.configuration.httpruntimesection.maxrequestlength(v=vs.110).aspx