解決內網通過代理伺服器訪問外網部署WebService報錯問題“請求因 HTTP 狀態 407 失敗”
具體情況如下:
在外網的伺服器上部署了一個Web Service,由於公司網路原因,僅能通過內網穿過代理伺服器來訪問外網的Web Service。在新增外網的Web Service時,出現了提示視窗,如下圖:
提示輸入公司內網域的使用者名稱和密碼。我輸入了自己的使用者名稱和密碼,正常新增引用。
然後在呼叫時出現了問題,報錯資訊為:
請求因 HTTP 狀態 407 失敗:Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the Web Proxy service is denied.
需要代理伺服器認證,上網查了好多的帖子,發現給出的解決方案有誤,原內容為:
首先引用名稱空間
using System.Net;
定義一個代理類
WebProxy myProxy = new WebProxy("192.168.0.3:8080",true);
然後又定義了一個用於身份驗證的類
myService.Credentials = new NetworkCredential("username","password","domainname");
其中的myService變數為一個例項化的Web Service物件。
個人理解其實這是不對的,這個Credentials在註釋中為“獲取或設定XML Web services 客戶端身份驗證的安全憑據”。我們要設定的應該是通過代理時我們使用的安全憑據,所以這個設定是不對的。在上面定義的myProxy
設定代理物件的Credentials屬性
myProxy.Credentials = new NetworkCredential("username "," password "," domainname ");
然後將定義的代理物件賦給Web Service物件的Proxy代理屬性即可
myService.Proxy = myProxy;
作完這些設定就可以呼叫Web Service提供的介面了。
測試訪問代理成功。