[关键字]:SPS 2007 ,Web Service,Create Folder,The parent folder does not exist,FolderNotFound

[问题描述] http://msdn2.microsoft.com/en-us/library/websvcdocumentworkspace.dws.createfolder.aspx ,这篇msdn的文章介绍了如何调用SPS 2007的一个Web Services 函数CreateFolder 来创建一个文件夹到指定的站点目录。

比如我们有两个site,url 分别是http://spsServerName/default.aspx(根站点) , http://spsServerName/sites/mytestsite/default.aspx (子站点).

利用如下的代码(来源于msdn)可以建立一个文件夹到http://spsServerName/Shared Documents.

MSDN 的一点小误解(创建文件夹出错)//首先添加 web reference http://spsServerName/_vti_bin/dws.asmx
MSDN 的一点小误解(创建文件夹出错)
try


但是如果想创建文件夹到http://spsServerName/sites/mytestsite/Shared Documents ,通过

MSDN 的一点小误解(创建文件夹出错)dwsWebService.CreateFolder("sites/mytestsite/Shared Documents/folder_name")
MSDN 的一点小误解(创建文件夹出错)
MSDN 的一点小误解(创建文件夹出错)或者
MSDN 的一点小误解(创建文件夹出错)
MSDN 的一点小误解(创建文件夹出错)dwsWebService.CreateFolder(
"http://spsServerName/sites/mytestsite/Shared Documents/folder_name")

就会得到如下错误信息:

FolderNotFound (10). The parent folder does not exist.

所以通过CreateFolder来指定路径是不对的。如果重新添加子site 的web reference  http://spsServerName/sites/mytestsite/_vti_bin/dws.asmx  也无法创建文件夹到当前的这个子site "mytestsite"的 “ Shared Documents”下

[原因&解决办法]

如果你查看一下工程文件里的Reference.cs 这个文件,你就会发现真正的原因。你会看到如下的代码:

        }
哈哈,这就是为什么总只能在root site 下创建文件夹,而不能在下面的site下创建文件夹了吧?就算我们添加子site的web reference也会被指向根site 的.
所以我们只需要在上面的MSDN代码前添加一句就可以了
MSDN 的一点小误解(创建文件夹出错) dwsWebService.Url = "http://spsServerName/sites/mytestsite/_vti_bin/dws.asmx";

完整代码如下:
MSDN 的一点小误解(创建文件夹出错)using System;
MSDN 的一点小误解(创建文件夹出错)
using System.Collections.Generic;
MSDN 的一点小误解(创建文件夹出错)
using System.Text;
MSDN 的一点小误解(创建文件夹出错)
using System.Windows.Forms;
MSDN 的一点小误解(创建文件夹出错)
using ConsoleApplication1.localhost;
MSDN 的一点小误解(创建文件夹出错)
using System.IO;
MSDN 的一点小误解(创建文件夹出错)
namespace ConsoleApplication1


//后记:这个问题其实不是很难,但是如果不仔细看的话,确实想不到原因,总是想当然的以为在函数CreateFolder 中设置路径。在我解决这个问题后,就特别想把它赶快写下来,以供大家参考,以免碰到同样的问题多走弯路,尤其是这个问题是在网上搜不到,如果刚好有人遇到这个问题可以参考一下。

相关文章: