我的目标是使用 WebSocket .Net 客户端实现(即不是浏览器)通过需要 NTLM 身份验证的企业代理连接到 WebSocket。到目前为止,所有解决方案(例如 websocket-sharp-with-proxy、websocket4net)都不够。
我已经尝试过这些:
How to use proxies with the WebSocket4Net library
https://stackoverflow.com/a/2587330/573261
据我所知,作者尚未更新有关添加 NTLM 代理支持的讨论。 http://websocket4net.codeplex.com/discussions/448172
这个问题试图询问为什么客户端实现不支持代理,但没有得到回答,也没有阐明为什么没有人愿意解决这个问题。
回到我的问题,如何在 NTLM 代理后面的客户端应用程序中使用 WebSocket 技术?
最佳答案
在 System.Net.WebSockets
中找到的 ClientWebSocket
对象包含一个 Options
属性,允许您配置代理设置。
var ws = new System.Net.WebSockets.ClientWebSocket();
await ws.ConnectAsync(new Uri("destination.com"), CancellationToken.None);
ws.Options.Proxy = new WebProxy("example.com")
{
Credentials = new NetworkCredential("userName", "password")
};
NetworkCredential
对象用于基于密码的身份验证,并且可以提供您需要的内容。如果上述方法不起作用,您还可以尝试在 WebSocket
对象的 Options
属性上设置 Credentials
,如下所示。
ws.Options.Credentials = new NetworkCredential("userName", "password");
我无法访问这种类型的环境,所以我还没有真正尝试过您正在尝试做的事情,并且不确定这是否有帮助。但是,这看起来对我有用。
关于.net - 如何将 .NET WebSocket 客户端与 NTLM 代理结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39091816/