我正在开发一个 Web 应用程序,该应用程序需要获取 SharePoint 上的文件夹和子文件夹,并将其放在表示层次结构的 TreeView 上。我的应用程序与 SharePoint 不在同一台服务器上运行,因此我认为最好的方法是通过 Web 服务。
所以我在我的项目中添加了对 SiteData.asmx 的 Web 引用,并找到了以下代码:
Private Sub GetSiteData()
Dim RootFolder As String = "http://mySharepointServer/site/doc_site"
Dim DirWSSP As String = "http://mySharePointServer/_vti_bin/SiteData.asmx"
'Definitions of TreeView
Dim tree As TreeView
Dim raiz As TreeNode
Dim no As TreeNode
tree = Page.FindControl("trvFolder")
raiz = New TreeNode(RootFolder)
tree.Nodes.Clear()
tree.Nodes.Add(raiz)
' Definitions of web service
Dim service As New SP_SiteData.SiteData
service.Credentials = New System.Net.NetworkCredential("userID", "password", "domain")
Dim enArray() As SP_SiteData._sFPUrl
service.EnumerateFolder(RootFolder, enArray)
Dim en As SP_SiteData._sFPUrl
For Each en In enArray
If en.IsFolder Then
no = New TreeNode(en.Url)
raiz.ChildNodes.Add(no)
End If
Next
End Sub
我从msdn上的一个论坛复制了这段代码,但没有用,service.EnumerateFolder 总是返回一个空数组,也就是说,enArray 总是什么都没有,我得到一个错误:对象引用未设置为对象的实例。
这段代码有效吗?还有另一种方法可以做到这一点吗?我对 Web 服务和 Web 应用程序非常陌生。OBS:我正在使用 Visual Studio 2010 和 SharePoint 2010