2013-03-18 68 views
0

我有一個WinForms應用程序,它調用IIS7上託管的WCF服務。出於某種原因,連接到客戶端網絡的計算機在嘗試通過WinForms應用連接到WCF服務時會收到401 Unauthorized錯誤。我花了不少時間試圖弄清楚這一點,這是我迄今發現的。WCF錯誤401僅在某些電腦上未經授權

  • WinForms應用程序在不在客戶端網絡上的任何其他PC上接收WCF服務數據。
  • 從客戶端網絡,我可以通過Web瀏覽器瀏覽WCF服務。
  • 從客戶端網絡,我可以瀏覽到一個服務方法,並得到「方法不允許」 錯誤按預期。

此外,應該指出,WCF服務使用REST而不是SOAP。

這裏是我使用的代碼來完成所有的服務電話:

  byte[] dataStream = Encoding.UTF8.GetBytes(strParameters); 
      WebRequest webRequest = WebRequest.Create(strUrl + strFunction); 
      webRequest.Method = "POST"; 
      webRequest.ContentType = "application/json"; 
      webRequest.ContentLength = dataStream.Length; 
      Stream newStream = webRequest.GetRequestStream(); 

      newStream.Write(dataStream, 0, dataStream.Length); 
      newStream.Close(); 
      WebResponse response = webRequest.GetResponse(); 
      Stream responseStream = response.GetResponseStream(); 
      StreamReader responseReader = new System.IO.StreamReader(responseStream, Encoding.UTF8); 
      string responseString = responseReader.ReadToEnd(); 

沒有人有任何線索,爲什麼我只會在客戶端的網絡上得到401錯誤?

回答

1

我的建議是嘗試從客戶端機器通過fiddler調用,並驗證是否可以通過POST獲得預期結果。如果這是成功的,我會研究如何在IIS中託管服務。我曾多次看到這個問題是匿名的,或者基本身份驗證被關閉導致類似的問題。

+0

我有匿名用分配給它的用戶帳戶開啓,但它沒有解決問題。但是提琴手是一個很棒的主意,我從來沒有用過它,所以我會試驗它,看看我能否得到一些成功的請求。 – 2013-03-18 20:35:29

+0

原來客戶端的防火牆阻止了請求。謝謝。 – 2013-03-18 21:52:24

相關問題