问题标签 [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.
c# - 为什么设置 ServicePointManager.ServerCertificateValidationCallback = null 不起作用?
我有以下片段,我从一组集成测试中调用:
但是,只有在任何给定的测试运行中的第一个测试才会通过......一旦我运行了这一行:
我无法让 WebClient 在同一测试运行中再次引发证书错误,即使我明确将此委托分配给 null。我也尝试过明确返回 false;我尝试添加一个命名的委托引用,然后将其删除,而不是仅仅分配/重新分配,甚至检查回调中的 SslPolicyErrors 并返回policyErrors == SslPolicyErrors.None
- 没有任何效果。
(我明确地验证了我们测试环境中的某些 URL 返回证书警告,并且我还需要验证如果用户忽略证书警告,他们将看到特定页面,因此证书处理有点奇怪)
有任何想法吗?
c# - 以这种方式设计 ServicePointManager.ServerCertificateValidationCallback 的理由是什么?
ServicePointManager.ServerCertificateValidationCallback
是一个全局静态属性,只需执行以下操作即可被应用程序中的任何代码覆盖:
为什么他们决定以这种方式实施它?当然,它应该是WebRequest
对象的属性,并且您应该有一个很好的理由来说明您忽略证书的原因。
ssl - RijndaelManaged 和 ServicePointManager 的安全性
我有一个关于RijndaelManaged和 ServicePointManager的安全问题。
我已经实现了一个系统,其中 C# 应用程序正在加密数据,例如用户凭据和一些 XML 数据。然后我使用 WebClient 将加密的用户凭据和一些包含指令的加密 XML 文档一起发送到我的 Tomcat Java Web 应用程序。Java 应用程序的工作:解密用户凭证和 XML 指令——执行指令并用加密的 XML 结果响应 C#。
从我的 C# 应用程序到 Tomcat 服务器的所有连接都启用了 SSL(目前为自签名证书)。
第一个问题: 鉴于我的 C# 应用程序默认情况下总是连接到我的服务器(仅)启用 SSL。我可以简单地将回调函数实现为:
ServicePointManager.ServerCertificateValidationCallback = 委托 { 返回真;};
据我了解,回调函数用于识别和验证我正在连接的服务器使用的证书。如果我将该应用程序提供给——比如我的一个客户连接到我的服务器(启用 SSL)——上面的代码是否令人满意?如果客户端使用我的应用程序连接到另一个未知的服务器并且我不知道它的 SSL 证书状态 - 上面的代码应该替换为实际的证书验证函数。我的问题有意义吗?
第二个问题: 我在我的 C# 应用程序中使用 RijndaelManaged 实现了加密/解密。但我使用的密钥是 C# 应用程序的一部分——应用程序被混淆了。据我了解,这不是一种安全的方式。
C# 应用程序是否有可靠的方法从我的 Web 应用程序接收加密/解密密钥。或者有没有办法在 C# 应用程序中生成密钥,Web 应用程序可以使用它来解密数据 - 如果是这样:我如何生成该密钥,最重要的是如何以可靠的安全方式将其发送到服务器方法。由于连接是 SSL - 密钥可以只是加密流的一部分吗?
这是我在 C# 应用程序中用于加密的代码。
c# - ServicePointManager.ServerCertificateValidationCallback 未命中
我有以下代码。
但是代码永远不会进入ValidateCertificate
方法....如果我提交标准HttpsWebRequest
但如果我使用网络服务它不起作用。我究竟做错了什么?
c# - 使用 BindIPEndPointDelegate 指定源端口似乎不起作用
我已经全面搜索了如何使用 BindIPEndPointDelegate 来更改我的 HttpWebRequest 的源端口。我在这方面找到了多个帖子:
但是,它似乎对我不起作用。我发现这个人也有同样的问题: Define Outgoing/Calling Port for SOAP Web Service in Visual Studio 2010
基本上,我想在连接到网页时更改我的源端口。BindIPEndPointDelegate 非常简单。
当我使用 netstat -n 查看连接时,我希望将 myipaddress:8086 视为源 IP 和目标 IP:80。我在 netstat 中看到的是它正在使用我指定的端口创建一个环回 (127.0.0.1:8086)。查看netstat -n的屏幕截图
由于这是我的第一篇文章,我无法发布图片。所以图片可以在这里找到
为什么 BindIPEndPointDelegate 创建一个环回连接,如何让我的 WebRequest 表现得像具有我指定端口的浏览器?
我在一个win7 Pro盒子上,没有本地防火墙,没有通过代理。
c# - Mono C# 在一台 Linux 机器上运行良好,但在另一台机器上却不行!也许与证书有关?
我有一些调用肥皂服务的代码。
它在我的第一台 linux 机器上运行良好。
但是,当我在另一台机器上运行它时,出现以下错误。
谷歌似乎表明它可能来自证书,尽管我不确定这一点,因为我正在通过ServicePointManager.ServerCertificateValidationCallback = Validator;
Where Validator
is a function that return true 覆盖证书方法。
有任何想法吗?
c# - WPF 的 Imagecontrol 冻结 UI
我想在我的 WPF 应用程序中显示用户 Gravatar。这就是我绑定图像控件的方式:
GravatarConverter 返回给定电子邮件的 URL。不幸的是,这在加载第一个图像时完全阻止了我的 UI。请注意,我使用的是“IsAsync=True”。经过一些研究,我发现在应用程序启动时在单独的线程中调用 FindServicePoint 时可以解决这个问题:
但是,当我的应用程序已经在下载图像时 FindServicePoint 没有完成时,这不起作用。有人可以解释一下为什么 WPF-App 需要这个 FindServicePoint,为什么会阻塞 UI 以及如何避免阻塞?
谢谢
更新:事实证明,在我取消选中 Internet Explorer 的“Internet 选项”->“连接”->“LAN 设置”中的“自动检测设置”后,我的问题就消失了。
我使用这个非常简单的 WPF 应用程序来重现问题,只需在文本框中插入图像的 url 并单击按钮。启用“自动检测设置”后,应用程序会在第一次加载图像时冻结几秒钟。使用此选项立即禁用其加载。
主窗口.xaml
主窗口.xaml.cs
.net - 在 WebException 之后避免 ProtocolViolationException
我正在解决这个错误:
https ://github.com/openstacknetsdk/openstack.net/issues/333
该问题涉及ProtocolViolationException
以下消息:
HTTP/1.0 协议不支持分块编码上传。
我发现我能够可靠地重现问题,我发出一个产生 502 响应代码的 Web 请求,然后调用使用带有分块编码的 POST 请求。我将此追溯到具有502 响应之后ServicePoint.HttpBehaviour
的值的属性。HttpBehaviour.HTTP10
我能够使用以下技巧(在catch
块中)解决问题。此代码“隐藏”ServicePoint
由失败请求创建的实例ServicePointManager
,强制它ServicePoint
为下一个请求创建一个新实例。
问题:
- 为什么我要观察这种行为?
- 解决问题的非hacky方法是什么?
java - Java中的ServicePointManager等价物
我正在尝试将 VB.net 项目转换为用于 android 应用程序的 java。我被困在某个时刻。 我的 VB.net 代码是
此代码发送 Web 请求。我已经使用 json 成功地将我的 android 应用程序的 web 请求发送到 web 服务器。除了这两行之外,所有部分都清楚
有没有人知道它在java中的等价物,您的帮助将不胜感激
c# - 如何使用 Async HttpClient C# 限制连接
我试图限制我必须连接到端点的最大连接数,我通过设置 ServicePointManager.DefaultConnectionLimit 来做到这一点,但它不起作用。为了测试这一点,我设置了一个休眠 5 秒然后返回的端点。
这是我的代码:
下面是输出:
如您所见,异步 HttpClient 不受最大连接数 1 的限制,因为并行进行 3 个调用需要 5 秒,而异步 WebClient 受 1 个连接限制,因为并行进行 3 个调用需要 15 秒。
我的问题是......如何使用异步 HttpClient 限制最大连接数?
谢谢。