我正在尝试学习从外部C#客户端调用SharePoint Web Services。我使用的是MOSS 2007和VS 2008。网络上有很多这样做的示例,但大多数示例似乎使用了与我在Visual Studio中看到的不同形式的Web Service API。我的问题是......这是怎么回事?
例如,当我启动Visual Studio 2008,创建一个新的C#控制台应用程序项目,然后执行“Add Service Reference...”以添加对“http://myspserver/_vti_bin/Lists.asmx”的引用时,生成的命名空间(无论我选择给它起什么名称)包含ListsSoap、ListsSoapChannel和ListsSoapClient类,但不包含Lists类。
但是我看到的许多例子都期望在那个名称空间中有一个Lists类,我经常看到这样的代码:
sharepoint.lists.Lists l = new sharepoint.lists.Lists();
System.Net.NetworkCredential cred = new System.Net.NetworkCredential("your username here", "your password here");
l.Credentials = cred;
XmlNode n = l.GetListItems("your calendar name here", null, null, null, null, null, null);
这段代码没有为我编译,我不希望它为我编译,因为浏览到Lists服务的绑定(本例中为“sharepoint.lists”)显示了我上面提到的其他类,但没有Lists类。
用ListsClient()这样的类来代替Lists()是行不通的,如果我这样做了,以后就会有问题,例如,ListsClient对象没有“Credentials”属性,而是有“ClientCredentials”属性。
这几乎就像我使用的是旧的或新的API形式,但我使用的是MOSS 2007(WSS 3.0),我看到的示例说它们是针对相同的SP版本编写的。
我错过了什么或做错了什么?这个列表类来自哪里?
谦卑TIA的任何帮助。
PS:上面的代码来自这里:Link
1条答案
按热度按时间ctehm74n1#
“添加服务引用”使用WCF,您看到的是编译WSDL的预期结果。请阅读有关Windows Communication Foundation的更多内容,以了解如何使用这些类。
如果你想生成一个Lists类(正如你所发现的那样,这更常见),使用“添加Web引用”对话框--这些对话框使用System.Web.Services类,而不是WCF。