我的目标是使用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技术?
答案 0 :(得分:2)
ClientWebSocket
中的System.Net.WebSockets
对象包含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
对象用于基于密码的身份验证,可能会提供您所需的内容。如果以上操作不起作用,您也可以尝试在Credentials
对象的Options
属性上设置WebSocket
。
ws.Options.Credentials = new NetworkCredential("userName", "password");
我无法访问此类环境,因此我实际上没有尝试过您尝试做的事情,并且不确定这是否会有所帮助。但是,这看起来对我有用。