UWP UnauthorizedException

时间:2015-09-12 12:14:37

标签: c# .net visual-studio windows-runtime uwp

我目前正在编写我的第一个UWP应用程序,只是为了学习绳索。我正在构建一个小应用程序,从下载的facebook-archive中提取数据。

但是当我尝试打开文件时(即使每个人都有完全访问权限),我收到了UnauthorizedException。我不明白这一点,我发现任何人都没有遇到任何旧文件的问题(有很多人遇到更具体方案的问题但不只是硬盘上的简单文件)

System.UnauthorizedAccessException was unhandled by user code
  HResult=-2147024891
  Message=Access to the path 'C:\Users\patri\Downloads\facebook-100004420950389\html\messages.htm' is denied.
  Source=System.IO.FileSystem
  StackTrace:
       at System.IO.WinRTIOExtensions.<TranslateWinRTTaskCore>d__1`1.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at System.IO.WinRTFileSystem.<OpenAsync>d__1.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       at System.IO.WinRTFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)
       at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
       at System.Xml.XmlSystemPathResolver.GetEntity(Uri uri, String role, Type typeOfObjectToReturn)
       at System.Xml.XmlTextReaderImpl.FinishInitUriString()
       at System.Xml.XmlReaderSettings.CreateReader(String inputUri, XmlParserContext inputContext)
       at System.Xml.Linq.XDocument.Load(String uri, LoadOptions options)
       at Facebookalyzer.FacebookArchiveParser.PopulateArchiveFromHtml(String filePath, FacebookMessageArchive archive)
       at Facebookalyzer.FacebookArchiveParser.<>c__DisplayClass0_0.<ExtractAllChatMessages>b__0()
       at System.Threading.Tasks.Task.Execute()
  InnerException:

有人知道我为什么会得到这个例外吗?或者只是你不应该直接在UWP-Apps中访问硬盘上的文件(这会让我产生疑问,但如果是这样的话,为什么他们会提供文件打开对话框)

1 个答案:

答案 0 :(得分:10)

您不会显示您的代码,但听起来您尝试按路径打开文件,而不是直接使用文件选择器返回的StorageFile。

您的应用无法直接访问大多数文件系统(包括下载目录),只能通过文件系统代理间接访问此类文件。 StorageFile对象与代理一起使用以打开用户已授权的文件,并提供应用程序读取和写入的文件内容流。

请参阅我的博客文章here