Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.IO.Packaging.Package.Open()引发UnauthorizedAccessException_C# - Fatal编程技术网

C# System.IO.Packaging.Package.Open()引发UnauthorizedAccessException

C# System.IO.Packaging.Package.Open()引发UnauthorizedAccessException,c#,C#,我们有一个现有的应用程序,它使用System.IO.Packaging.Package类读取大量结构化数据。除了试图从只读源(如CD或DVD)打开软件包外,我们的应用程序在所有情况下都能正常工作 如果PackagePath位于只读介质上,则应用程序会在以下行引发异常: _ourPackage = Package.Open(PackagePath, FileAccess.Read); 当数据存储在CD上时,上述行抛出UnauthorizedAccessException。我们不确定为什么会发生这

我们有一个现有的应用程序,它使用System.IO.Packaging.Package类读取大量结构化数据。除了试图从只读源(如CD或DVD)打开软件包外,我们的应用程序在所有情况下都能正常工作

如果PackagePath位于只读介质上,则应用程序会在以下行引发异常:

_ourPackage = Package.Open(PackagePath, FileAccess.Read);
当数据存储在CD上时,上述行抛出UnauthorizedAccessException。我们不确定为什么会发生这种情况。我们已尝试以管理员身份运行,但无效

如上所述,我们只指定读取访问,因为此特定过程只需要读取数据,我们通常通过CD或DVD等介质分发打包数据


知道我们为什么会遇到这种情况吗?

您没有指定文件模式,默认为FileMode.OpenOrCreate。不确定在CD-Rom上执行此操作时有多少类似的窗口。请使用让您指定FileMode.Open的重载。下一步是找出Windows不喜欢您的原因。

我们的应用程序也有同样的问题。在Outlook中双击电子邮件附件时,文档被复制到Internet临时文件目录并设置为只读。尝试打开包(只读文件)时,引发UnauthorizedAccessException

同时指定
FileMode.Open
FileAccess.Read
解决了以下问题:

using (Package package = Package.Open(projFilePath, FileMode.Open, FileAccess.Read))
{
   // do stuff
}