我试图从网络位置读取文件。但我总是遇到未经授权的访问异常。
我通过StorageFolder.getFolderFromPathAsync选择StorageFolder,但列出文件会引发异常。
当我通过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>

我错过了什么?

最佳答案

你的应用无法访问路径。访问文件的权限是通过选择器返回的storagefolder来处理的。
而不是此行尝试从pickedfolder创建新的storagefolder

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

只需使用pickedfolder本身:
var pathFolderList = await pickedFolder.GetFilesAsync(); //Exception

我在我的博客中对此做了更详细的介绍Skip the path: stick to the StorageFile

关于c# - 通过FilePicker进行访问时,StorageFolder.GetFolderFromPathAsync上的UnAuthorizedAccessException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30226114/

10-11 14:45