c# /VS2010/Sharepoint列表连接
本文关键字:连接 列表 VS2010 Sharepoint | 更新日期: 2023-09-27 18:01:58
我正在尝试连接一个c#程序与Sharepoint。我有:一个Sharepoint网址,用户名和密码,没有Sharepoint.dll(客户端机器,没有微软。)Sharepoint命名空间,所以我用Sharepoint Web Services), Visual Studio 2010 Ultimate.
我遵循这个教程:http://www.scribd.com/doc/8634090/Accessing-SharePoint-Data-Using-C-Without-Running-Code-On-the-SharePoint-Server-Part-1
到目前为止我做了什么:
用我的Sharepoint的URL给我的项目添加了一个"Service Reference",比如
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);
}
在指定的行崩溃:
HTTP请求未经授权,客户端身份验证方案为"匿名"。从服务器接收到的认证报头是'Negotiate,NTLM,Basic realm="…"
很可能是因为我没有指定用户名和密码。网上的各种教程都告诉我们可以这样设置凭据:
TestSP.Credentials = System.Net.CredentialCache.DefaultCredentials;
问题是:没有TestSP.Lists
,所以我用了TestSP.ListsSoapClient
,没有Credentials
,只有ClientCredentials
,是只读的
您可能使用了新的"添加服务引用",而不是"添加Web引用"。这将创建一个类似于WCF的包装器(带有Client
后缀),而不是基于Soap的包装器。您可以使用以下命令指定其凭据:
TestSP.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
"添加Web引用"隐藏在Visual Studio 2010中。如果你愿意,你仍然可以使用它来生成类似于教程的代码,但是Service Reference应该也能工作。
请参见:ClientBase<>。ClientCredentials
旁注:如果你所做的一切都是读取基于视图的列表项,你可能要考虑使用xml视图-从SharePoint列表中获取xml数据。您可以通过执行web请求轻松获取内容。它在项目限制方面有一些问题,但总的来说更方便。