如何在 webapi 中配置 maxQueryStringLength?

Posted

技术标签:

【中文标题】如何在 webapi 中配置 maxQueryStringLength?【英文标题】:How to configure maxQueryStringLength in webapi? 【发布时间】:2018-07-21 02:23:35 【问题描述】:

我在webapi中写了一个以json格式获取数据的方法。目前这项工作,但是当我通过另一个参数调用此方法时,查询字符串的长度为 2154 个字符,让我出错:

此请求的查询字符串长度超过 配置 maxQueryStringLength 值。

描述:一个未处理的 执行当前 Web 请求期间发生异常。 请查看堆栈跟踪以获取有关错误的更多信息和 它起源于代码。

异常详细信息:System.Web.HttpException:查询的长度 此请求的字符串超出了配置的 maxQueryStringLength 价值。

我在 system.webServer 部分内的代码下方添加到 webconfig

<security>
      <requestFiltering>
        <requestLimits maxQueryString="5000" maxUrl="5000" maxAllowedContentLength="102400000" />
      </requestFiltering>
    </security>

但没有解决。

webapi 方法:

 [HttpPost,HttpGet]
    
    public IHttpActionResult LockSeats(string ticketsJson, bool checkCompartment, string userId, string ipAddress)
    
        try
        
            List<WagonAvaliableResponse> tickets = JsonConvert.DeserializeObject<List<WagonAvaliableResponse>>(ticketsJson);
            AdakTrainLibrary.ResultLockSeat resultLockSeat = _adakTrain.LockSeats(tickets, 1, 1, "1", "1", checkCompartment, userId, ipAddress, TrainUserId, TrainPass);
            return Ok(resultLockSeat);
        
        catch (Exception e)
        
            return Ok(e);
        
    

我该如何解决这个问题?

【问题讨论】:

***.com/questions/8159321/… 有帮助吗? 好的解决了... 【参考方案1】:

我将此代码添加到system.webServer 部分

<security>
  <requestFiltering>
    <requestLimits maxUrl="30000" maxQueryString="209007151" />
  </requestFiltering>
</security>

并添加

<httpRuntime maxUrlLength="10240" maxQueryStringLength="2097100"  targetFramework="4.5.2"/>

进入system.web部分并解决

【讨论】:

这个 webapi 添加到 web 应用程序项目中。这个 API 在网站内部工作。

以上是关于如何在 webapi 中配置 maxQueryStringLength?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .NET Core 2.2 WebApi 和 Azure AD 2.0 中配置 Swagger?

如何在.net6webapi中配置Jwt实现鉴权验证

IIS6.0中部署webapi 提示404

将 Blazor 服务器配置为托管 WebAPI

如何在自托管 Web API 应用程序中配置 OData 端点

如何调用启用 SSL 的 Web Api?