1. 程式人生 > >解決內網通過代理伺服器訪問外網部署WebService報錯問題“請求因 HTTP 狀態 407 失敗”

解決內網通過代理伺服器訪問外網部署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屬性,它才是真正的“獲取或設定提交給代理伺服器進行身份驗證的憑據”。所以我們將程式碼作如下修改:

設定代理物件的Credentials屬性

myProxy.Credentials = new NetworkCredential("username "," password "," domainname ");

然後將定義的代理物件賦給Web Service物件的Proxy代理屬性即可

myService.Proxy = myProxy;

作完這些設定就可以呼叫Web Service提供的介面了。

測試訪問代理成功。