2016-08-23 23 views
9

Mục tiêu của tôi là sử dụng WebSocket. Thực thi ứng dụng khách (ví dụ: không phải trình duyệt) để kết nối với WebSocket trên proxy công ty yêu cầu xác thực NTLM. Cho đến nay, tất cả các giải pháp (ví dụ: websocket-sharp-with-proxy, websocket4net) xuất hiện ngắn.Cách sử dụng .NET WebSocket Client với proxy NTLM?

Tôi đã thử các:

How to use proxies with the WebSocket4Net library

https://stackoverflow.com/a/2587330/573261

Theo như tôi biết, tác giả đã không cập nhật cuộc thảo luận này về việc bổ sung hỗ trợ NTLM proxy. http://websocket4net.codeplex.com/discussions/448172

Câu hỏi này đã cố gắng để hỏi lý do tại sao triển khai khách hàng không hỗ trợ proxy, nhưng nó đã không trả lời, và không tỏ bất kỳ ánh sáng mới về lý do tại sao không ai muốn tiếp cận vấn đề.

Quay lại câu hỏi của tôi, làm cách nào để sử dụng công nghệ WebSocket trong ứng dụng khách phía sau proxy NTLM?

+0

bạn đang sử dụng gì cho ngăn xếp .NET http cơ bản? Hầu hết các ngăn xếp cửa sổ (ví dụ: WinInet, WinHTTP) sẽ hỗ trợ NTLM. – Adrien

+0

@Adrien Điều gì đó phù hợp với 'WebSocket mới' ("ws: //echo.websocket.org", nguồn gốc: "http://example.com"); 'nhưng điều đó không lấy proxy NTLM làm tham số . Các thư viện mà tôi đã đề cập cũng đã được thử và bất cứ điều gì họ sử dụng trong nội bộ – RichardTheKiwi

+0

Bạn có thể đề cập đến điều này giống như một quy trình dịch vụ độc lập hay giống ứng dụng dành cho máy tính để bàn mà một người đăng nhập và khởi động ứng dụng của bạn từ thông tin đăng nhập của họ không? –

Trả lời

2

Đối tượng ClientWebSocket được tìm thấy trong System.Net.WebSockets có thuộc tính Options cho phép bạn định cấu hình cài đặt proxy.

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") 
}; 

Đối tượng NetworkCredential được sử dụng để xác thực dựa trên mật khẩu và có thể cung cấp những gì bạn cần. Bạn cũng có thể thử đặt Credentials trên thuộc tính Options của đối tượng WebSocket như thế này nếu thông tin trên không hoạt động.

ws.Options.Credentials = new NetworkCredential("userName", "password"); 

Tôi không có quyền truy cập vào loại môi trường này, vì vậy tôi chưa thực sự thử những gì bạn đang cố gắng làm và không chắc chắn liệu điều này có hữu ích hay không. Nhưng, điều này có vẻ như nó sẽ làm việc với tôi.

Các vấn đề liên quan