2011-02-10 67 views
5

我試圖調用SharePoint列表服務來獲取列表定義和數據。 SharePoint網站是我的公司,但我無法控制它。這是我所知道的有關服務器的安全性:.NET調用SharePoint Web服務獲取HTTP 401未經授權的異常

服務器是HTTPS:登錄時// 服務器接受的Windows Active Directory憑據...

我已經試過基本,摘要,CredentialCache,剛剛的NetworkCredential,UnsafeAuthenticatedConnectionSharing ,UseDefaultCredentials,預認證...不知道正確的配置是什麼...

我收到的錯誤是HTTP 401未授權。

   Uri url = new Uri(baseAddress + "/_vti_bin/Lists.asmx", UriKind.Absolute); 
       Lists.Lists client = new Lists.Lists(); 

       // sometimes works 
       CredentialCache cache = new CredentialCache(); 
       cache.Add(url, "NTLM", new NetworkCredential(context.UserName, context.Password, context.Domain)); 
       client.UseDefaultCredentials = false; 
       client.Credentials = CredentialCache.DefaultCredentials; 
       // doesn't work ever 
       //client.Credentials = new NetworkCredential(context.UserName, context.Password, context.Domain); 
       //client.PreAuthenticate = true; 
       client.UnsafeAuthenticatedConnectionSharing = true; 
       client.Url = url.AbsoluteUri; 
       listData = client.GetList(listName).OuterXml; 
+1

當您在瀏覽器中訪問該網站時,請說明您如何正常登錄。 – djeeg 2011-02-10 06:47:59

回答

1

這段代碼在同一個服務器的SharePoint上本地運行 - 如果是的話那麼它可能是local loopback check

如果沒有,那麼你需要給一些細節acurate的 - 是使用集成的身份驗證(如果有的話是通過NTLM或Kerberos)或基本或表單您的網站?

而且 - 如果您嘗試使用瀏覽器(獲取WSDL)或Web服務測試工具,如SoapUIone of the many alternatives

1

我的web應用程序是一個混合認證模式(要求使用該Web服務會發生什麼NTLM + FBA),下面的代碼適用於我。

HttpWebRequest req = WebRequest.CreateHttp("https://example.com/"); 
req.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); //login with windows account 
req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequired; 
req.Credentials = new NetworkCredential(「username", 「password", "domain」); 
//this also works 
//req.Credentials = CredentialCache.DefaultNetworkCredentials; 
相關問題