AspNetCore - QueryString BadRequest上的数组

时间:2017-07-01 00:41:19

标签: asp.net-core asp.net-core-webapi

我有一个简单的httpGet端点,它接收一个字符串

[Authorize]
    [HttpGet("filter/{filters}"), Route("filter")]
    public virtual IActionResult Filter(string filters)
    {
        try
        {
            return Ok(Service.GetByFilter(JsonConvert.DeserializeObject<FilterHelper>(filters)));
        }
        catch (Exception ex)
        {
            Logger.LogWarning(LoggingEvents.GET_ENTITY_BY_FILTER, ex, Localizer["EntityGetFilterFailed"]);
            return Ok(new RequestResult(StatusResult.Danger, new Message(string.Format(Localizer["UnexpectedError"], LoggingEvents.GET_ENTITY_BY_FILTER))));
        }
    }

昨天,它运行正常,今天我的PC启动失败并且已经恢复,之后我的API给了我错误的请求结果。

如果我打电话给这个网址

http://localhost:23272/api/users/filter?filters={"Page":1,"PageSize":5}

请求正常,但如果我尝试调用此url(之前有效)

http://localhost:23272/api/users/filter?filters={"Page":1,"PageSize":5, "FilterItens": []}

API向我发回BadRequest状态(400)。已经尝试用一些itens传递数组,badrequest也是。

关于如何处理它的任何想法?

细节:如果我从邮递员那里打电话,它的工作正常。

http://localhost:23272/api/users/filter?filters={"Page":1,"PageSize":5, "FilterItens": []}

我的模特

public class FilterHelper
{
    #region Properties
    public int Page { get; set; }
    public int PageSize { get; set; }
    public ICollection<FilterItem> FilterItens { get; set; }
    public string[] Includes { get; set; }
    #endregion
}

enter image description here

1 个答案:

答案 0 :(得分:0)

根本问题是:

我的授权令牌对于请求标头来说太大了。

令牌长度约为16k,并且正在破坏标题。

我对令牌进行了更改,它完成了800长度,一切都再次工作。