Skip to main content
 首页 » 编程设计

c#之WebDav 如何检查文件夹是否存在

2024年02月24日29java哥

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

我需要找到一种方法来可靠地确定该文件夹是否已经存在...请注意,现在我依赖于 try catch,但这意味着任何协议(protocol)异常都不会引发错误,因此它不是一个可靠的函数。如果文件夹存在,我如何使用 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

请您参考如下方法:

如果您在 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 表示存在。