如何将.NET WebSocket客户端与NTLM代理一起使用?

时间:2016-08-23 03:22:20

标签: .net c#-4.0 websocket ntlm http-proxy

我的目标是使用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技术?

1 个答案:

答案 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");

我无法访问此类环境,因此我实际上没有尝试过您尝试做的事情,并且不确定这是否会有所帮助。但是,这看起来对我有用。