【问题标题】:why can't asp.net find the appropriate apicontroller when input is large?为什么输入很大时asp.net找不到合适的apicontroller?
【发布时间】:2016-03-25 15:44:20
【问题描述】:

我有一个功能可以一次保存我的实体列表。

public void Save(IEnumerable<SubjectData> subjectDatas)
{
    var request = _requestFactory.CreateRequest("api/subjectData", Method.POST, AccessToken.AccessToken, new List<SubjectData>(subjectDatas));
    var response = Client.Execute(request);
    _responseDeserializer.Deserialize<SubjectData>(response);
}

这是调用 wep API 函数:

// POST api/<controller>
public void Post([FromBody]List<SubjectData> values)
{
   _subjectDataService.Save(values, User.Identity.Name);
}

当我subjectDatas 是大约 30 个列表时,这很好用。但是,当subjectDatas 非常大(在我的测试用例中,超过 96000)时,我会收到一个意外错误。响应有 StatusCode NotFound。这是怎么回事?为什么突然找不到合适的控制器?

【问题讨论】:

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


    【解决方案1】:

    根据这些答案

    Is there a limit on how much JSON can hold?

    How to increase the json size limit for ASP.NET WebAPI Post call?

    引用一些资料

    An ASP.NET request that has lots of form keys, files, or JSON payload members fails with an exception

    JavaScriptSerializer.MaxJsonLength Property

    似乎存在可由 ASP.Net 解析的默认最大数据大小,为了增加它,您必须对 web.config 进行一些更改

    这是提供的建议之一:

    尝试在web.config 中的appSettings 下添加aspnet:MaxJsonDeserializerMembers

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

    另一个引用来源:

    达到此 JSON 负载限制的应用程序可以修改 ASP.NET appSettingaspnet:MaxJsonDeserializerMembers,如下图 在 ASP.NET 应用程序的配置文件中。此设置地址 “症状”部分的错误消息 3。

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

    注意 将此值增加到高于默认设置会增加您的服务器对拒绝服务漏洞的敏感性 安全公告 MS11-100 中对此进行了讨论。

    【讨论】:

      【解决方案2】:

      根据Max Parameter length in MVC
      这是一个窗口限制。在您的网址中,参数是路径的一部分。 windows 限制路径段长度。

      您应该在 regedit 中更改 UrlSegmentMaxLength

      在以下注册键中创建一个DWORD

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

      UrlSegmentMaxCount

      URL 路径段的最大数量。如果为零,则计数由 ULONG 的最大值。

      有效值范围 0 - 16,383

      Http.sys registry settings for Windows

      【讨论】:

        猜你喜欢
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 2019-09-20
        • 2020-12-12
        相关资源
        最近更新 更多