Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步/等待最大并发http请求数_C#_Async Await - Fatal编程技术网

C# 异步/等待最大并发http请求数

C# 异步/等待最大并发http请求数,c#,async-await,C#,Async Await,当Async/Await发出http请求时(例如使用HttpClient),默认情况下是否内置任何节流功能 像这样的问题意味着将打开无限数量的连接。我的应用程序在一个循环中执行一批http请求,似乎限制在50个TCP连接左右 起初,我担心需要添加信号量lim进行节流,但.NET似乎为我这样做。 有人能解释一下吗?在.Net framework中,连接有一些限制。例如,此ServicePointManager具有DefaultConnectionLimit,允许您限制并发操作 但是,我不建议将其用

当Async/Await发出http请求时(例如使用
HttpClient
),默认情况下是否内置任何节流功能

像这样的问题意味着将打开无限数量的连接。我的应用程序在一个循环中执行一批http请求,似乎限制在50个TCP连接左右

起初,我担心需要添加
信号量lim
进行节流,但.NET似乎为我这样做。
有人能解释一下吗?

在.Net framework中,连接有一些限制。例如,此
ServicePointManager
具有
DefaultConnectionLimit
,允许您限制并发操作

但是,我不建议将其用于节流。如果您需要控制您的请求,您应该使用
SemaphoreSlim
,特别是
WaitAsync
,因为您处于
async wait
环境中,并且这些请求是IO绑定的(并且很长)


使用
SemaphoreSlim.WaitAsync
意味着您不会阻塞并异步等待,这对于任何其他非
async
节流机制都是不可能的。此外,在完成操作之前,您不希望启动该操作。

每个服务器的连接数限制为2个。您是否连接到相同的服务器?是的,在这种情况下,我在批量加载场景中重复访问相同的端点。我知道web浏览器传统上有这2个连接限制,但.NET也实施了这一限制?这是怎么回事?。