1

这是我下面的当前功能。它用于在 SharePoint 的文档库中创建文件夹,但使用 web dav 功能,这比 MOSS 的东西更容易。

我需要找到一种方法来可靠地确定文件夹是否已经存在...请注意,现在我依赖于 try catch,但这意味着任何协议异常都不会引发错误,因此它不是一个可靠的函数。如果文件夹存在,如何使用 web dav 检查?

private void createFolderUsingWebDav(string siteAddress, string listAddress, string folderName)
        {
            //Check Databox Folder Exists
            string folderAddress = siteAddress + @"/" + listAddress + @"/" + folderName; 
            HttpWebResponse response;
            try
            {
                HttpWebRequest request = (System.Net.HttpWebRequest)HttpWebRequest.Create(folderAddress);
                request.Credentials = wsLists.Credentials; // CredentialCache.DefaultCredentials;
                request.Method = "MKCOL";
                response = (System.Net.HttpWebResponse)request.GetResponse();
                response.Close();
            }
            catch (WebException ex)
            {
                if (ex.Status != WebExceptionStatus.ProtocolError)
                {
                    throw ex;
                }
            }
        }

基本上我想要这个产品在这里实现的解包版本:http: //www.independentsoft.de/webdav/tutorial/exists.html

4

2 回答 2

5

如果您在 url 上执行 PROPFIND,如果该文件夹不存在,您将返回 404。

使 PROPFIND 看起来像这样(仅显示相关标题)

PROPFIND /yourfolder HTTP/1.1
Content-Type: application/xml

<?xml version="1.0"?>
<propfind xmlns="DAV:">
   <prop>
      <resourcetype />
   </prop>
</propfind>

404 表示资源不存在,207 表示存在。

于 2009-12-23T02:52:09.997 回答
0

PROPFIND 是您的朋友:DAV:resourcetype 属性 ( http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.15.9 ) 有一个用于集合的 DAV:collection 子元素。只需使用 PROPFIND 和 DAV:allprop 或 DAV:prop 检索它(两者都在http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.9中描述)。

于 2009-12-22T17:32:14.430 回答