我目前正在编写我的第一个UWP应用程序,只是为了学习诀窍。我正在构建一个小型应用程序,从下载的facebook存档中提取数据。
但是当我试图打开文件时(即使每个人都有完全的访问权限),我就会得到一个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中访问硬盘上的文件(这会让我问为什么如果是这样的话,他们为什么要提供一个文件打开对话框)?
发布于 2015-09-12 13:29:29
您没有显示您的代码,但听起来您试图按路径打开文件,而不是直接使用文件选择器返回的StorageFile。
您的应用程序无法直接访问大多数文件系统(包括下载目录),并且只能通过文件系统代理间接访问这些文件。StorageFile对象与代理一起打开使用授权的文件,并为应用程序提供要读写的文件内容流。
看我的博客条目http://blogs.msdn.com/b/wsdevsol/archive/2012/12/05/stray-from-the-path-stick-to-the-storagefile.aspx
https://stackoverflow.com/questions/32538658
复制相似问题