2012-02-08 59 views
1

我想在C#控制檯應用程序中調用sharepoint webservices。當我使用本地系統的WSS作爲目標應用程序時,代碼工作正常,但不能與通過網絡訪問的其他服務器一起使用。以下是我的代碼。Sharepoint Webservice 401錯誤

Webs service = new Webs(); 
      service.PreAuthenticate = true; 
      service.Credentials = new System.Net.NetworkCredential(login, password); 
      //service.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

      service.Url = url + @"/_vti_bin/webs.asmx"; 

      XmlNode sites = null; 

      try 
      { 
       sites = service.GetWebCollection(); 
      } 
      catch (Exception ex) 
      { 
       return; 
      } 

注意事項: 1.它既不DefaultNetworkCredentials也不符合我的域用戶憑據運行。 2.如果在瀏覽器中成功粘貼了Web服務端點,則會列出Web服務方法。 3.在任何情況下(訪問遠程服務器),我都會收到401未經授權的錯誤。

我錯過了什麼嗎?

回答

1

使用像Fiddler這樣的工具來捕獲控制檯應用程序和SharePoint之間的http流量。這將有助於調試您的問題。

+0

雖然這並沒有解決問題,但至少證實我的客戶服務電話沒有問題。服務器上存在訪問權限問題。 – 2012-02-10 06:39:16

0

您是否檢查過您的應用程序池帳戶?可能是您的應用程序池帳戶沒有足夠的權限。將您的應用程序池帳戶更改爲在您的網站上擁有完全權限的帳戶,然後重試。它應該工作。

我還發現,如果您安裝了Microsoft Windows XP Service Pack 2(SP2)或Microsoft Windows Server 2003 Service Pack 1(SP1),這可能是已知問題。要解決這個問題,您可以按照此知識庫文章中的步驟 - http://support.microsoft.com/?scid=kb;en-us;896861&x=14&y=17