如何在webapi中配置maxQueryStringLength?

时间:2018-02-10 12:16:11

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

我在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);
        }
    }

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

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

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

并添加

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

进入system.web部分并解决了