2012-08-29 3 views
2

Box, Inc C# sdk를 사용하여 한 번에 여러 폴더를 만들 때 자바 스크립트 오류가 발생했습니다. 나는 경로와 자식 디렉터리 경로에 대한 문자열 목록으로 구성된 클래스를 사용하고 있습니다. 그러나 CreateBoxFolders 메서드를 호출하면 임의로 매개 변수 개수 불일치 예외가 발생합니다. 나는 지금까지 이유를 알 수 없었다.상자, Inc 함께 여러 폴더 만들기 C# sdk "매개 변수 개수가 일치하지 않습니다." 예외

private void CreateBoxFolders(string dir, long boxfolderid) 
    { 
     string[] dirnames = dir.Path.Split('\\'); 

     CreateBoxFolder(dirnames[dirnames.Count() - 1], boxfolderid); 

     long id = GetFolderId(dirnames[dirnames.Count() - 1], boxfolderid); 

     // This is a class with a list that stores the folder structure and path 
     dir.ChildDirectories.ForEach(x => 
      CreateBoxFolders(x, id)); 
    } 

    private void CreateBoxFolder(string name, long parent) 
    { 
     _BoxManager.CreateFolder(name, parent, false); 
    } 


    private long GetFolderId(string name, long parent) 
    { 
     var folders = _BoxManager.GetFolderStructure(parent, 
        BoxSync.Core.Primitives.RetrieveFolderStructureOptions.OneLevel); 
     long number = folders.Folder.Folders.Where(x => x.Name == name.Trim()).First().ID; 
     return number; 
    } 
+1

정확히 어떤 SDK를 사용하고 있습니까? AFAIK에는 Box 용 공식 C# SDK가 없습니다. –

+0

빈 dir을 함수에 전달하고 있습니까? dirnames.Count()와 같은 호출은 비어있는 dirnames 배열에 대해 무제한입니다. – Peter

+0

상자 github 페이지에서 C# SDK를 사용하고 있습니다. [link] (https://github.com/box/box-csharp-sdk) – user1633763

답변

0

귀하의 배열 중 하나가 null이거나 비어 있다고 생각됩니다.

long id = GetFolderId(dirnames[dirnames.Count() - 1], boxfolderid); 

이 줄은 어느 시점에서 루트 폴더로 작업 할 가능성이 높습니다. 여기서 id = 0입니다. 폴더 0은 계정의 루트에 있으며 디렉터리 구조가없는 가상 폴더입니다. 따라서 그것은 뿌리입니다. (C#을 프로그래머없이) 내 의심이 나는 하늘의 배열의 카운트가 null 또는 제로가 될 수 있다는 생각

long id = ...(emptyarray[emptyarray.Count() -1], ... 

아래로 평가하고 있다는 점이다. Null은 나쁠 것입니다 ...

+0

이 문제는 가까운 것으로 보입니다. null을 전달하지 않도록이 문제를 해결하면 "기존 연결이 원격 호스트에 의해 강제로 닫혔습니다"라는 또 다른 예외가 발생합니다. 이것이 동일한 코드 블록에 의해 발생하는지 궁금합니다. – user1633763