1

これは以下の私の現在の機能です。SharePoint のドキュメント ライブラリにフォルダーを作成するために使用されますが、MOSS のものよりも簡単な Web DAV 機能を使用します。

フォルダーが既に存在するかどうかを確実に判断する方法を見つける必要があります...私はその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 子要素があります。DAV:allprop または DAV:prop で PROPFIND を使用して取得するだけです (どちらもhttp://greenbytes.de/tech/webdav/rfc4918.html#rfc.section.9で説明されています)。

于 2009-12-22T17:32:14.430 に答える