在.NET Core中为单个路由/操作设置MaxQueryLength

guicsvcw  于 2023-03-20  发布在  .NET
关注(0)|答案(1)|浏览(135)

是否可以在ASP .NETCore中为单个路由/操作设置最大查询(字符串)长度?
我有一个搜索操作,它返回数据库中以GUID为键的实体。我需要从API返回许多实体,并通过Id检索。因此,我希望修改搜索操作以允许参数[FromQuery]Guid[] EntityIds,然后我可以传递10或20(或其他)实体ID到这个搜索操作。但是,API失败,因为querystring太长。我知道它可以全局设置,但我希望会有这样的东西:

[HttpGet, MaxQueryLength(4000)]
public async Task<IActionResult> Search([FromQuery] Guid[] EntityIds)

所以我不必为这个请求更改整个API...?

dtcbnfnu

dtcbnfnu1#

只是猜测,但怎么样?

public async Task<IActionResult> Search([FromQuery, MaxLength(4000)] Guid[] EntityIds)

MaxLength属性应该做你想做的...从.Net 6资源:

/// <summary>
    ///     Initializes a new instance of the <see cref="MaxLengthAttribute" /> class.
    /// </summary>
    /// <param name="length">
    ///     The maximum allowable length of collection/string data.
    ///     Value must be greater than zero.
    /// </param>
    [RequiresUnreferencedCode(CountPropertyHelper.RequiresUnreferencedCodeMessage)]
    public MaxLengthAttribute(int length)
        : base(() => DefaultErrorMessageString)
    {
        Length = length;
    }

相关问题