Tôi đang cố gọi một dịch vụ web. Tôi cần sử dụng proxy sử dụng tập lệnh WPAD. URL cho tập lệnh WPAD này khác nhau đối với các lần triển khai ứng dụng khác nhau.Tự động sử dụng WebProxy với tập lệnh WPAD
Mặc dù IE có các phiên bản chính xác, ứng dụng đang chạy dưới dạng dịch vụ cửa sổ đang chạy trong tài khoản Hệ thống cục bộ, do đó ứng dụng không biết cài đặt IE cho người dùng windows này.
Đưa sau trong app.config hoạt động:
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true" >
<proxy autoDetect="True" scriptLocation="http://url.to/wpad.dat"/>
</defaultProxy>
</system.net>
Nhưng điều này có những hạn chế mà nó không thể được cấu hình bởi người sử dụng. Có cách nào để làm điều trên từ động (C# -) mã? Tôi cũng nghi ngờ ở trên sẽ thay đổi hành vi của dịch vụ web mà không nên đi qua một proxy (nhưng tôi đã không xác minh điều đó).
Tại http://msdn.microsoft.com/en-us/library/system.net.webproxy.aspx tôi thấy nội dung hữu ích: "(Đối với một ví dụ chứng minh rằng sử dụng tính năng WPAD, xem tài liệu cho lớp IWebProxyScript.)" Nhưng tôi đã không tìm thấy ví dụ :(
Tôi tìm thấy một cái gì đó tương tự ở đây: [link] (http://www.pcreview.co.uk/forums/winhttpgetproxyforurl-t1862181.html) nhưng WPADs có thể trả về một số máy chủ proxy (không vượt quá và/hoặc cân bằng tải, xem [ link] (http://en.wikipedia.org/wiki/Proxy_auto-config)). Sau đó nó trả về dấu chấm phẩy tách ra. Các mục nhập trở về "TRỰC TIẾP" dường như biến mất bằng phương pháp này. Vì vậy, mặc dù đây là một bước đi đúng hướng, nó dường như không hoàn toàn đối với tôi. –
Bạn không thể sử dụng string.split trên giá trị trả về để nhận danh sách các mục nhập, và sau đó thử chúng theo thứ tự, mặc định không sử dụng proxy nếu danh sách trống? – sga101
Đó là những gì tôi đã làm. Nhưng tôi không thích nó: - Bây giờ tôi có một vòng lặp yêu cầu web cho mỗi proxy tôi tìm thấy - Tôi không biết cách xử lý DIRECT. Bây giờ tôi không sử dụng proxy nếu tôi nhận được một danh sách trống, nhưng tôi đã thấy các ví dụ trả về cả proxy và DIRECT, vì vậy đó có thể không thực sự là cách thực hiện đúng. - Nếu yêu cầu web sắp hết thời gian, tôi thực sự không biết tại sao. Có thể là proxy, có thể là cái gì khác. Vì vậy, tôi lặp lại yêu cầu với một proxy khác. Có thể một thời gian chờ khác? Và người dùng chờ đợi ... - Tôi thực sự không muốn làm điều này. Tôi muốn hệ điều hành xử lý nó ... –