这是我目前的功能如下。它用于在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
答案 0 :(得分:4)
如果您在网址上执行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表示资源不存在。
答案 1 :(得分:0)
PROPFIND是你的朋友:DAV:resourcetype属性(http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.15.9)有一个DAV:collection子元素用于集合。只需使用带有DAV的PROPFIND检索它:allprop或DAV:prop(两者都在http://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.9中描述)。