2010-07-06 46 views
0

我寫了這種方法來測試憑據,但我不明白爲什麼當它進入GetResponse方法實際上是去並運行web服務。我只是想讓它測試該Web服務的憑證是否正確。測試證書的代碼有問題嗎?

private bool TestCredentials(string sURL, ref string sUsername, ref string sPassword) 
    { 

     bool retVal = false; 
     CredentialCache myCache = new CredentialCache(); 
     myCache.Add(new Uri(sURL), "Full", new NetworkCredential(sUsername, sPassword, "our_domain")); 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sURL); 
     request.Credentials = myCache; 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     if (response.StatusCode == HttpStatusCode.OK) 
      retVal = true; 
     return retVal; 

回答

0

如果沒有與服務器進行某種通信,您無法知道憑據是否良好。你可以創建一個虛擬URL來執行一個測試請求。 IE,您可以請求的URL實際上不會在服務器上執行任何操作。

+0

虛擬URL?你的意思是不通過真正的asmx地址,我通過例如http://www.google.com?但仍然具有相同的憑據?但如果你指的是該服務器上的另一個網址,那麼這是我們唯一擁有的網址。 – Bohn 2010-07-06 17:46:10

+0

你對服務器有任何控制權嗎?如果你不這樣做,那麼你可以做的事情並不多。發出請求(IE,調用'GetResponse')將執行該操作。我的意思是在web服務中添加另一個功能,它不會做任何事情。 – 2010-07-07 12:49:20