我试图从网络位置读取文件。但我总是遇到未经授权的访问异常。
我通过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/