问题标签 [servicepointmanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
14137 浏览

c# - 根据使用 imap 的验证程序,远程证书无效

我使用 IMAP 要求和 SMTP 发送命令编写了一个 NET 4.5 客户端应用程序工具。

现在我当前的问题是我在一个客户处遇到以下异常:

根据验证程序,远程证书无效

我将代码更改为:

所以所有的证书都应该被接受。服务器需要 SSL。相同的连接信息在使用 Outlook 或 Thunderbird 时没有错误。

0 投票
0 回答
1283 浏览

c# - HTTPS 代理因 ServicePointManager 而失败

我正在尝试通过 https 代理进行连接,但总是捕获到一个异常,指出“ServicePointManager 不支持 https 方案的代理”。我用来测试连接的代码如下:

我还使用 curl 测试了代理,它运行良好(尽管出于某种原因我不得不使用 --proxy-insecure)。我使用的命令是:

当我尝试使用 http:// 作为代理 curl 时,只是给了我错误“(56) Proxy CONNECT aborted”。

那么,是否可以在 .NET Framework 中使用 https 代理?(我目前正在使用 .NET 4.6.2)

0 投票
0 回答
407 浏览

c# - HttpClient 在活动一段时间后超时请求

我正在使用 System.Net.Http.HttpClient 的单个实例将请求从 Windows 服务发送到多个 RESTful API。

我遇到了一个奇怪的问题,其中一些 HTTP 请求或多或少有规律地超时。我每隔45 到 60 分钟就会在某个地方出现很多超时。

这是此类超时的频率。

错误频率

这是我创建 HttpClient 的方法,

一些请求超时后,DefaultConnectinoLimit 增加了。应该进一步增加还是有一个我可以使用的最佳值?

还有其他可能导致此问题的原因吗?

非常感谢您对此的任何想法或建议。

注意:我正在运行 100 个线程并在这些线程上使用 SendAsync 调用。

0 投票
0 回答
679 浏览

c# - c# Webrequest through https(已配置)代理(ServicePointManager 不支持 https 方案的代理)

我需要使用也有 https 地址的代理连接到 https-url。我的代码就是这样的:

这样做我得到一个众所周知的错误:

ServicePointManager 不支持 https 方案的代理

为简单起见,此处没有凭证代码。不,用户不会将代理更改为 http。

现在有一些提示,这是无法实现的,例如: Microsoft 博客MSDN 论坛,但这些都有些陈旧,表明,至少 Chrome 和 Firefox 似乎有解决该问题的方法。

谁能告诉我,如何通过代理访问 https 地址,而代理本身只能通过 https 访问?

ServicePointManager 现在应该可以做到了,有什么发展吗?

谢谢!!

0 投票
1 回答
1110 浏览

c# - C# - HttpWebRequest / GetResponse 性能

我有一个基于 HTTPS 的 API,我需要调用很多次。使用 HttpWebRequest.Create(uri).GetResponse() 需要 50 毫秒到 500 毫秒或更长时间来执行。为了检查响应时间,我这样实现:

然后调用它:

多个调用的输出:

第一个问题:我想知道是否有任何方法可以加快 GetResponse 以使其花费尽可能少的时间?

现在..因为我需要用不同的URL发出很多不同的请求,为了加快我决定使用TPL Dataflow Block(而不是Parallel.Foreach)的过程,因为Parallel.Foreach主要用于CPU bound工作,而我正在做的是I/O bound(还有处理的响应,所以也有一点 CPU 工作)。当我使用 TPL Dataflow Block 时,处理 250 个 URL 需要 7 秒才能执行,而 Parallel Foreach 需要 15 秒或更长时间,所以我很肯定 TPL Dataflow Block 的使用是正确的方法。我是如何实现的:

而且由于我对 7s 的执行不满意,我尝试过调整ServicePointManager以加快速度,到目前为止我尝试过的事情都没有奏效:

第二个问题:如果无法加快速度GetResponse()以实现更快的执行,有没有办法调整TPL Dataflow Block以获得更好的性能?

编辑:我的目标是尽可能快地执行所有调用。

0 投票
1 回答
1410 浏览

c# - Owin中的最大并发请求数

我使用 OWIN 在控制台应用程序中自托管了一个小型 Web 应用程序。

在到达 ApiController 之前,注册了一个中间件:

这里 Next.Invoke 调用了控制器方法,它基本上将 http 请求异步转发到另一个 API,即感兴趣的主线是:

但是,如果我尝试像这样向 API 提交 10 个 http 请求(不是故意等待它们,因为我想对 API 施加压力)

然后立即再提交 10 个,然后我在 HealthcheckMiddleware 的 catch 块中得到以下异常:

InvalidOperationException:提交响应后无法执行此操作。

堆栈跟踪:

我试过搜索 Stackoverflow 和 Google,但似乎找不到任何有价值的东西。例如,我找到了这个,但是这里开发人员在提交请求后阅读了请求,而我没有这样做。

以防万一,这里包含 ApiController 中的完整 POST 方法:

0 投票
1 回答
170 浏览

c# - ServicePointManager.DefaultConnectionLimit 按 IP 吗?

我正在构建一个网络爬虫,目标站点不允许来自同一 IP 的超过 2 个并发连接。

我的计划是:我会购买一个带有 4 个额外弹性 IP 的 EC2,以更快地获取数据(将是 10 个并发连接,8 个来自其他 IP,2 个来自“主”IP)。

我会使用BindIPEndPointDelegate(从这里获取)来设置源 IP,然后开始下载页面。

所以我的问题来了: DefaultConnectionLimit 将应用于每个源 IP 还是将整个应用程序限制为 2 个并发连接?

0 投票
1 回答
7421 浏览

powershell - PowerShell Invoke-WebRequest 引发 WebCmdletResponseException

执行Invoke-WebRequest -Uri https://www.freehaven.net/anonbib/date.htmlPowerShell 行时会抛出WebCmdletResponseException. 我怎样才能获得有关它的更多信息,以及可能导致这种情况的原因是什么?虽然我可以使用 Python 成功获取页面的内容,但在 PowerShell 中它会引发异常。

完全例外:

0 投票
0 回答
473 浏览

vb.net - 从未调用过 FtpWebRequest ServerCertificateValidationCallback

Win 7、VS2013、.NET 4.5、winforms 应用程序

我正在尝试使用 vb.net 通过 SSL/TLS 连接到 FTP 服务器。我在验证服务器证书时遇到问题,因为我正在使用的 ServerCertificateValidationCallback 方法似乎被忽略了,因此与服务器的连接永远不会发生,在 GetResponse 行出现超时错误。在将服务器证书添加为受信任后,我检查了 FileZilla 上的连接并且它工作正常。

下面是我的 FtpWebRequest:

考虑到 HttpWebRequests,我已经看到类似的主题,但是这里似乎没有什么可用的。我还启用了跟踪以查看详细情况:

我看到 FtpWebRequest 和服务点之间缺乏关联。有谁知道如何修理它?我会很感激一些指导或代码示例。

0 投票
1 回答
1250 浏览

c# - c# httpclient post force single packet

Using Microsoft Message Analyzer, I can see that post data using the HttpClient is being sent in two tcp packets. One for the header, then one for the post data. This data could easily fit into one packet, however it is being split into two. I have explicitly turned on nagling and expect 100 continue off using the ServicePointManager, though, it doesn't seem to help.

Microsoft Message Analyzer 5023 (.Net) shows 2 packets are sent to destination, 8170 (Postman) shows 1 packet being sent. Tests were done with the same payload.

Below is some sample code used to generate the request in .net

Is there a way to force the payload into a single packet?

Using .Net Framework 4.7

related question here