2008-10-09 24 views
56

Tôi cần định cấu hình trang web để truy cập dịch vụ web trên máy khác, qua proxy. Tôi có thể cấu hình trang web để sử dụng một proxy, nhưng tôi không thể tìm thấy một cách xác định các thông tin mà proxy yêu cầu, là có thể? Đây là cấu hình hiện tại của tôi:Có thể chỉ định thông tin đăng nhập proxy trong web.config của bạn không?

<defaultProxy useDefaultCredentials="false"> 
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" /> 
</defaultProxy> 

Tôi biết bạn có thể thực hiện điều này thông qua mã nguồn, nhưng phần mềm trang web đang chạy CMS nguồn đóng nên tôi không thể thực hiện việc này.

Có cách nào để thực hiện việc này không? MSDN không giúp tôi nhiều ..

Trả lời

92

Có, có thể chỉ định thông tin đăng nhập của riêng bạn mà không sửa đổi mã hiện tại. Nó đòi hỏi một đoạn mã nhỏ từ phía bạn mặc dù.

Tạo một assembly gọi SomeAssembly.dll với lớp này:

namespace SomeNameSpace 
{ 
    public class MyProxy : IWebProxy 
    { 
     public ICredentials Credentials 
     { 
      get { return new NetworkCredential("user", "password"); } 
      //or get { return new NetworkCredential("user", "password","domain"); } 
      set { } 
     } 

     public Uri GetProxy(Uri destination) 
     { 
      return new Uri("http://my.proxy:8080"); 
     } 

     public bool IsBypassed(Uri host) 
     { 
      return false; 
     } 
    } 
} 

Thêm phần này vào tập tin cấu hình của bạn:

<defaultProxy enabled="true" useDefaultCredentials="false"> 
    <module type = "SomeNameSpace.MyProxy, SomeAssembly" /> 
</defaultProxy> 

này "tiêm nhiễm" một proxy mới trong danh sách, và vì không có thông tin xác thực mặc định, lớp WebRequest sẽ gọi mã của bạn trước và yêu cầu thông tin đăng nhập của riêng bạn. Bạn sẽ cần phải lắp ráp SomeAssembly trong thư mục bin của ứng dụng CMS của bạn.

Đây là mã tĩnh, và để có được tất cả các chuỗi như người dùng, mật khẩu và URL, bạn có thể cần phải triển khai ConfigurationSection của riêng mình hoặc thêm một số thông tin trong số AppSettings, dễ dàng hơn nhiều.

+0

Tôi sẽ đánh dấu đây là câu trả lời, vì có vẻ như nó * nên * hoạt động, nhưng tôi vẫn gặp sự cố khi kết nối có vẻ như không hoạt động ISA Server nhiều hơn bất cứ điều gì .. – spmason

+0

Điều này thực sự tuyệt vời. – Lalit

+0

Giải pháp tuyệt vời! Thật là một người tiết kiệm cuộc sống! cảm ơn @ Jerome-Laban! – mateuscb

1

Dịch vụ danh bạ/tra cứu LDAP có thể được sử dụng để phục vụ mục đích này. Nó liên quan đến một số thay đổi ở cấp cơ sở hạ tầng, nhưng hầu hết các môi trường sản xuất có quy định như vậy

+0

Tôi không biết điều này sẽ hữu ích như thế nào. Máy chủ không nằm trên cùng một miền nếu điều đó quan trọng .. – spmason

14

Trong khi tôi đã không tìm thấy một cách tốt để xác định thông tin mạng proxy trong web.config, bạn có thể thấy rằng bạn vẫn có thể sử dụng một giải pháp không mã hóa, bằng cách bao gồm này trong web.config của bạn:

<system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy proxyaddress="proxyAddress" usesystemdefault="True"/> 
    </defaultProxy> 
    </system.net> 

Thành phần quan trọng trong việc thực hiện việc này, là thay đổi cài đặt IIS, đảm bảo tài khoản chạy quy trình có quyền truy cập vào máy chủ proxy. Nếu quy trình của bạn đang chạy trong LocalService hoặc NetworkService, thì quá trình này có thể không hoạt động. Rất có thể, bạn sẽ muốn có một tài khoản miền.

2

Bạn có thể chỉ định thông tin bằng cách thêm một Generic Credential mới của máy chủ proxy của bạn trong Windows Credentials Manager:

1 Trong Web.config

<system.net>  
<defaultProxy enabled="true" useDefaultCredentials="true">  
<proxy usesystemdefault="True" />  
</defaultProxy>  
</system.net> 
  1. Trong Credential Quản lý >> Thêm một Generic Credential

Internet hoặc mạng địa chỉ: địa chỉ proxy của bạn
tên User: tên người dùng của bạn 0.123. Mật khẩu: bạn vượt qua

Cấu hình này làm việc cho tôi, mà không thay đổi mã.

+0

Trình quản lý thông tin xác thực của Whats? Không thể tìm thấy nó trên Windows 10 ... – leinad13

+0

Bảng điều khiển \ Tất cả mục bảng điều khiển \ Trình quản lý thông tin xác thực – jerone

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