2015-05-13 4 views
3

Я пытаюсь читать файлы из сетевого местоположения. Но я продолжаю получать UnAuthorizedAccessException.UnAuthorizedAccessException на StorageFolder.GetFolderFromPathAsync, имея доступ через FilePicker

Я выбираю StorageFolder через StorageFolder.GetFolderFromPathAsync, но перечисление файлов вызывает исключение.

Когда я выбираю ту же папку через FolderPicker, она работает.

Так что я попытался идентифицирующая проблемы с этим кодом:

FolderPicker picker = new FolderPicker(); 
picker.FileTypeFilter.Add("*"); 

StorageFolder pickedFolder = await picker.PickSingleFolderAsync(); 
if (pickedFolder != null) 
{ 
    var pickedFolderList = await pickedFolder.GetFilesAsync(); 
    var count = pickedFolderList.Count; 
    if (count > 0) 
    { 
     StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(pickedFolder.Path); 
     var pathFolderList = await folder.GetFilesAsync(); //Exception 
     if (pathFolderList.Count == count) 
     { 
      ProcessFolder(folder); 
     } 
    } 
} 

Исключение брошено на отмеченной линии, где установлена ​​переменная pathFolderList. Хотя я уже перечислил одну и ту же папку несколько строк выше.

Я поставил эти возможности:

<Capabilities> 
    <Capability Name="internetClient" /> 
    <Capability Name="privateNetworkClientServer"/> 
    <uap:Capability Name="enterpriseAuthentication"/> 
    <uap:Capability Name="removableStorage"/> 
</Capabilities> 

Что я упускаю?

ответ

1

У вашего приложения нет доступа к этому пути. Разрешение доступа к файлу обрабатывается через StorageFolder, возвращенный сборщиком.

Вместо этой линии, чтобы попытаться создать новый StorageFolder из pickedFolder

StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(pickedFolder.Path); 

Просто используйте сам pickedFolder:

var pathFolderList = await pickedFolder.GetFilesAsync(); //Exception 

я вошел в это более подробно в моем блоге Skip the path: stick to the StorageFile

+0

спасибо. Это было то, чего мне не хватало в документации. –