【发布时间】:2020-05-11 00:14:36
【问题描述】:
我正在尝试在我的 Xamarin Forms UWP 应用中执行以下代码行。
var tobj_DirectoryFiles = Directory.GetFileSystemEntries(@"C:\");
执行该行代码时,抛出异常如下:
HResult = -2147024891
消息:对路径“C:\”的访问被拒绝。
来源:System.IO.FileSystem
堆栈跟踪:在 System.IO.Enumeration.FileSystemEnumerator1.CreateDirectoryHandle(String path, Boolean ignoreNotFound)
at System.IO.Enumeration.FileSystemEnumerator1..ctor(字符串目录,EnumerationOptions 选项)
在 System.IO.Enumeration.FileSystemEnumerable`1..ctor(字符串目录,FindTransform 转换,EnumerationOptions 选项)
在 System.IO.Enumeration.FileSystemEnumerableFactory.UserEntries(字符串目录,字符串表达式,EnumerationOptions 选项)
在 System.IO.Directory.InternalEnumeratePaths(字符串路径,字符串 searchPattern,SearchTarget searchTarget,EnumerationOptions 选项)
在 System.IO.Directory.GetFileSystemEntries(字符串路径)
在 D:\VStudio\2019\Projects\UCI\Dev\UniversalCheckInHost\UniversalCheckInHost\UniversalCheckInHost\PopUps\FileSystem.xaml.cs:line 80 中的 UniversalCheckInHost.FileSystem.LoadTree(TreeViewNode pobj_Node) 处
我知道它缺少一些权限,但我不知道它需要什么权限。我找不到任何关于那个的doco。我目前对 UWP 项目具有以下权限:
互联网(客户端和服务器) 互联网(客户端) 专用网络(客户端和服务器) 可移动存储
知道我在权限中缺少什么吗?
【问题讨论】:
-
@Jason - doco 似乎适用于直接的 UWP 应用程序,而不是 Xamarin UWP 应用程序。例如,有关使用 Windows.Storage 等命名空间的文档讨论。这些命名空间不能在 Xamarin 应用程序中使用。相反,您使用 System.IO 命名空间。我确实尝试添加以下访问权限:broadFileSystemAccess 功能允许应用程序获得与当前运行应用程序的用户相同的文件系统访问权限,而在运行时无需任何额外的文件选择器样式提示。添加此受限访问没有任何区别。
-
XF 应用程序受其运行平台(Android、iOS、UWP)的限制。
-
是的,我知道。然而,我读到的关于保存/读取文件等的每一篇文章都说要使用 system.io。我正在使用 system.io 并收到上述错误。我正在寻找我需要向应用程序添加哪些权限才能进行这项工作。
-
您无法使用 System.IO 访问应用程序位置之外的文件。这是 UWP 中的一个已知限制。
标签: xamarin.forms uwp permissions system.io.file