2011-07-14 76 views
1

我正在嘗試將C#程序連接到Sharepoint。我擁有:Sharepoint URL,用戶名和密碼,沒有Sharepoint.dll(客戶機,沒有Microsoft.Sharepoint命名空間,所以我使用Sharepoint Web服務),Visual Studio 2010 Ultimate。C#/ VS2010/Sharepoint列表連接

我跟着這個教程:http://www.scribd.com/doc/8634090/Accessing-SharePoint-Data-Using-C-Without-Running-Code-On-the-SharePoint-Server-Part-1

我做了什麼至今:

增加了一個「服務引用」我的項目,我的SharePoint的URL像

https://.../content/10003194/_vti_bin/lists.asmx 

和我的代碼:

//no TestSP.Lists here... 
TestSP.ListsSoapClient cl = new TestSP.ListsSoapClient(); 
cl.Open(); 

String listGUID = "A9E7107B-7AF6-42DC-A1A7-6C898D55D23E"; 
String viewGUID = "684F5F8A-B32E-461C-BD53-677F84A9C101"; 

//this is where it crashes 
System.Xml.Linq.XElement data = cl.GetListItems(listGUID, viewGUID, null, null, "1000", null, ""); 

IEnumerable<XElement> elements = data.Elements(); 

foreach (XElement el in elements) 
{ 
    Console.WriteLine(el); 
} 

崩潰在指定行機智h:

該HTTP請求未經授權,客戶端身份驗證方案爲「匿名」。從服務器收到的驗證頭是「Negotiate,NTLM,Basic realm =」...「'

這很可能是因爲我沒有指定用戶名和密碼。網絡上的各種教程顯示蝨憑據可以這樣設置:

TestSP.Credentials = System.Net.CredentialCache.DefaultCredentials; 

的問題是:有沒有TestSP.Lists,所以我用TestSP.ListsSoapClient,它沒有Credentials,只有ClientCredentials,這是隻讀的。

回答

1

你可能已經使用了新的「添加服務參考」,而不是「添加網絡參考」。這會創建一個類似於WCF的包裝器(後綴爲Client),而不是基於Soap的包裝器。您可以使用指定的憑據:

TestSP.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; 

「添加Web引用」隱藏在Visual Studio 2010中如果你願意,你可以still use it to generate code similar to your tutorial,但服務引用正常工作。

參見:ClientBase<>.ClientCredentials


附註:如果你做的是閱讀基於視圖的列表項,你可能要考慮使用XML視圖 - Getting XML Data From a SharePoint List。您可以通過執行網絡請求輕鬆獲取內容。它有一些項目限制的問題,但它通常更方便。

+0

與這些憑據相同的錯誤,但我現在使用添加web引用,它似乎工作,我不會再有一個「未經授權」的錯誤,現在是另一個錯誤:'類型'Microsoft.SharePoint.SoapServer異常。 SoapServerException'被拋出.'。但我認爲這是別的... –

+0

@Eike - 希望我已經幫了忙。我已經用另一種獲取數據的方式更新了答案,供您考慮。 – Kobi