是否可以增加 HttpClient 中的最大 URL 长度? (无效的 URI:uri 字符串太长)
Posted
技术标签:
【中文标题】是否可以增加 HttpClient 中的最大 URL 长度? (无效的 URI:uri 字符串太长)【英文标题】:Is it possible to increase the max URI lenght in HttpClient? (Invalid URI: The uri string is too long) 【发布时间】:2021-01-18 16:36:47 【问题描述】:我在Dotnet 5
中使用HttpClient
并尝试创建一个带有很长URI 的查询。我得到了这个例外
Invalid URI: The uri string is too long
我试图弄清楚它的来源,它似乎可以归结为 this line 并带有一个常量:
internal const int c_MaxUriBufferSize = 0xFFF0;
似乎URL长度超过64K实际上是不可能的,但可能有一些我没有弄清楚?
【问题讨论】:
为什么需要这么长的uri? 这能回答你的问题吗? HttpClient: The uri string is too long @PeterCsala 嗨,不,讽刺地回答了一个完全不同的问题 【参考方案1】:简而言之:你不能。
如果您查看Uri
的来源,那么原因就很清楚了。
在其 GetException
method 内部,它转换为 ParsingError.SizeLimit
into 和 UriFormatException
。
所以,如果我们查看Uri
的代码,看看它何时以ParsingError.SizeLimit
失败,那么我们会发现这些:
在前两种情况下,根据c_MaxUriBufferSize
(1) 检查限制,其定义如下:
internal const int c_MaxUriBufferSize = 0xFFF0;
在以后的情况下,将根据 ushort.MaxValue
检查限制。
不幸的是,它们都无法改变。
【讨论】:
谢谢你的回答,我想的也是这样……以上是关于是否可以增加 HttpClient 中的最大 URL 长度? (无效的 URI:uri 字符串太长)的主要内容,如果未能解决你的问题,请参考以下文章
单例 httpClient 到 AppService 的单个实例
是否可以从 HttpClient-5.x 中止 HttpAsynClient 中的 http 请求 [GET、POST 等]?