2017-01-26 21 views
1

OneDrive C#SDKをコーディングしていて、複数のファイルを含むフォルダを共有していました。 onedrive.comから共有フォルダにアクセスするとファイルを見ることができますが、Itemをチェックしようとすると、子カウントは常にゼロになります。私はこれが私の最後かパーミッションの問題で混乱するかもしれないと仮定しています - しかし、私はちょうどサニティチェックのためにそれを過去に走りたいと思っていました。OneDrive C#SDKの子要素を表示できません

コード:

private async Task GetItem(string id = null) 
{ 
    List<string> idsToSearch = new List<string>(); 
    var expandValue = this.clientType == ClientType.Consumer 
      ? "thumbnails,children(expand=thumbnails)" 
      : "thumbnails,children"; 
    try 
    { 
     Item folder; 

     if (id == null) 
     { 
      folder = await this.oneDriveClient.Drive.Root.Request() 
          .Expand(expandValue).GetAsync(); //root 
     } 
     else 
     { 
      folder = await this.oneDriveClient.Drive.Items[id].Request() 
          .Expand(expandValue).GetAsync(); //children of root 
     } 

     WriteToFile(new List<string>(new[] { @"Folder: " + folder.Name })); 

     if (folder.Children.Count == 0) 
     { 
      WriteToFile(new List<string>(new[] { @"NO Children" })); 
     } 
     else 
     { 
      foreach (var child in folder.Children) 
      { 
       WriteToFile(new List<string>(new[] { 
       @"Children of " + folder.Name + " : " + child.Name })); 
      } 

      foreach (var item in folder.Children) 
      { 
       GetItem(item.Id); 
       idsToSearch.Add(item.Id); 
      } 
     } 
    } 
    catch (Exception exception) 
    { 
     PresentServiceException(exception); 
    } 
} 

それは共有フォルダのオブジェクトに到達したとき、私はまたItemオブジェクトのスナップショットが含まれていました。

enter image description here

更新

を見た後、 folderオブジェクトもう少し私はファウンデーション適切な数の子カウントを返すRemoteItemがあるが、子要素をフェッチするためのメタデータはありません。それは、これがRemoteItemシナリオであることが決定された質問に対するコメントから

enter image description here

+0

スクリーンショットでは、「AdditionalData」がいくつかあります。それは何かを見せてくれますか?それはいくつかの手がかりを提供するかもしれない。また、フォルダに有効なデータ(名前など)があるとしますか?その場合、権限は常に継承階層を流れていくため、権限の問題はないはずです。 – Brad

+0

@ブラッド - 私もそのアイデアを持っていましたが、それを見ても目を引くものはないようです。私はしかし、写真を更新しました。 – jdave

+0

ちょうど標準のODataのもの...何も使用しない:)。 'Folder.ChildCount'プロパティは期待値を含んでいますか? – Brad

答えて

1

。リモートアイテムはローカルアイテムとは異なります。レンダリングに便利なローカルメタデータがいくつかありますが、アイテムの実際のメタデータは別のユーザーのドライブにあります。したがって、そのようなアイテムに遭遇した場合(例えば、リモートフォルダの子を列挙する必要がある場合など)は、そのアイテムに対して直接行う必要があります(remoteItem.parentReferenceのと、idremoteItem.Id)。

this documentation for some more informationをご覧ください。

+0

ああ、それは意味がある - 別の呼び出しが必要です。さて、私はあなたのために別の質問がある@ブラッド。 'user 1'が' user 2'に一つの緩やかなファイルを共有している場合、これと同じアプローチが可能ですか?私は同様の問題を抱えています。ファイルを全く検出することはできませんが、共有されているファイルは* Shared *フォルダにしか存在しないため、このことが言及する必要があります。 – jdave

+1

特に共有されているファイル(フォルダ経由で共有されているものとは対照的に)は「マウント」できないため、ドライブを列挙しようとすると表示されません。代わりに、https://api.onedrive.com/v1.0/drive/view.sharedWithMe – Brad

+0

あなたの答えにあなたが提供したリンクを照会したいと思うでしょう - RESTの呼び出しでしかないようです。 'OneDrive C#SDK'メソッドを' remoteItem.parentReference.DriveId'で渡す方法を作ってください。 これは単に「待っている」のようなものでしょうか?(id)は 'driveId'でしょうか?ここで、' id'は 'driveId'ですか? – jdave

関連する問題