打开文件时Windows Phone 8 UnauthorizedAccessException

时间:2013-12-17 08:30:36

标签: c# debugging windows-phone-8 windows-phone file-access

当从Windows Phone Marketplace下载应用程序时,尝试访问应用程序的“Stl”文件夹中的“.stl”文件时出现非常奇怪的错误。在调试或发布模式下从Visual Studio 2012 Express启动时,它不会出现此行为。一旦我尝试加载文件,它就会给我一个“ System.UnauthorizedAccessException 访问路径' C:\ Data \ Programs \ APPUID \ Install \ Stl \ test.stl '是拒绝“以” GCode “几乎完全相同的方式访问”.gcode“文件时出现异常,导致没有任何错误。

我不知道是什么导致这个或如何调试这个,因为我不知道我是否能以某种方式将调试器附加到商店下载应用程序的实例。

我也不知道从商店和Visual Studio部署完全相同的应用程序之间可能有什么不同。如果在没有连接调试器的情况下从手机启动应用程序,Visual Studio安装的应用程序也不会给您带来任何麻烦。

有什么想法吗?

PS。该文件由文件流打开,然后由二进制文件程序使用。我不确定源代码是否真的需要以及哪个部分,但重要的一行只是:

FileStream fileStream = new FileStream(filePath, FileMode.Open);

在这种情况下,“filePath”是“Stl \ test.stl”。

2 个答案:

答案 0 :(得分:1)

如果没有看到您的实际代码,很难说出问题所在。因此,我不会试图阅读你的想法,而是提供另一种解决方案。

我在Windows Phone上广泛使用了隔离存储,我已经了解了这一点。

世界上没有库,没有API,没有SDK,没有Web服务,错误报告比Windows手机上的隔离存储更糟糕。

一切都是无效访问或未经授权访问ZERO的进一步信息。

为了解决这个问题,我创建了一个DLL,它将对象序列化为隔离存储。

您只需将[DataContractAttribute]置于您的班级名称之上,将[DataMemeber]置于您要保存的任何变量之上。然后,您只需将对象和唯一名称传递给savefile方法。而已!即时保存

您可以找到download here的免费DLL EZ_Iso.dll。使用示例代码和说明

代码是开源的,所以如果你希望你也可以反编译dll并看看它是如何工作的。

如果您有任何问题或改进,请随时与我或Twitter联系。

答案 1 :(得分:1)

好的我明白了。 “安装”目录实际上是受限制的访问,但由于某种原因,Visual Studio签名过程使应用程序具有足够的权限来访问此文件夹。确定相对目录的正确过程不是使用“Directory.GetCurrentDirectory()”而是使用“ApplicationData.Current.LocalFolder”。希望这有帮助!