2009-04-28 134 views
2

,我號召Web服務的方法,從後面用下面的代碼代理服務器:調用使用SSL C#web服務 - 「(401)未經授權」

myWebService.TestWebService webservice = new myWebService.TestWebService(); 
webservice.Url = "http://test.com/webservice?wsdl"; 

WebProxy proxy = new WebProxy("1.2.3.4", 8080); 
proxy.Credentials = new NetworkCredential("username", "password"); 
webservice.Proxy = proxy; 

string response = webservice.TestWebMethod(); 

這使用HTTP時工作正常,我在'響應'字符串中得到了我期待的回覆。 但是 - 如果我將URL更改爲HTTPS,那麼我會得到一個(401)未經授權的響應。

如果我把URL放入我的瀏覽器,它可以正常使用HTTP或HTTPS

我已經添加了代碼來處理SSL證書驗證,通過創建一個System.Net.ServicePointManager.ServerCertificateValidationCallback委託,但代碼從來沒有得到這麼多。該請求在驗證證書之前被拒絕,或者看起來像這樣。

任何幫助,非常感謝......

+0

我已經更新了我的答案。 – stevehipwell 2009-04-28 15:17:21

+0

你能否用更多的細節更新問題(例如,當你嘗試添加引用時,VS會發生什麼)? – stevehipwell 2009-04-28 15:56:23

回答

2

您是否需要憑據導航到SSL網址是什麼?
如果是這樣,您需要設置Web服務憑據。

您是否嘗試過使用SSL網址在Visual Studio中添加Web引用?
如果您無法通過Visual Studio添加Web引用,那麼代碼也無法正常工作。

你能確定你設置的最後一件東西是代理嗎(例如,在你設置代理之前更改url)?
有一個小的機會,代理可能會丟失,這應該是嘗試

0

在這裏的最後一件事是使用客戶端證書(我敢肯定,你不需要)爲例但可能會提供一些洞察&使用憑據到Web服務。

WebService.ManageOutboundDelivery oWS = new WebService.ManageOutboundDelivery(); 

if (My.Settings.HasClientCert == true) { 
    X509Certificate2 signedCert = new X509Certificate2(HttpContext.Current.Server.MapPath(My.Settings.ClientCertName), My.Settings.ClientCertPW); 
    oWS.ClientCertificates.Add(signedCert); 
} 

System.Net.CredentialCache oCred = new System.Net.CredentialCache(); 
Net.NetworkCredential netCred = new Net.NetworkCredential(My.Settings.WebServiceUID, My.Settings.WebServicePW); 

oCred.Add(new Uri(oWS.Url), "Basic", netCred); 
oWS.Credentials = oCred; 

你是否還檢查SSL證書是有效的 - 我猜你會看到這個的時候你打它通過瀏覽器,但它可能會導致試圖以編程方式打一個問題。

相關問題