C# Package.Open()异常:对路径的访问被拒绝

C# Package.Open()异常:对路径的访问被拒绝,c#,C#,我一整天都在试图解决这个问题,但不管我做什么,我总是得到相同的异常:UnauthorizedAccessException在第行未处理 使用(Package-Package=Package.Open(d.FullName,FileMode.Create,FileAccess.ReadWrite)) 完整代码为: NTAccount act = new NTAccount("c9lu-PC","c9lu"); DirectoryInfo d = System.IO.Directory.Creat

我一整天都在试图解决这个问题,但不管我做什么,我总是得到相同的异常:UnauthorizedAccessException在第行未处理 使用(Package-Package=Package.Open(d.FullName,FileMode.Create,FileAccess.ReadWrite))

完整代码为:

NTAccount act = new NTAccount("c9lu-PC","c9lu");

DirectoryInfo d = System.IO.Directory.CreateDirectory(path);

DirectorySecurity security = d.GetAccessControl();

security.AddAccessRule(new    FileSystemAccessRule(act,FileSystemRights.FullControl,InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));

d.SetAccessControl(security);

using (Package package = Package.Open(d.FullName, FileMode.Create, FileAccess.ReadWrite))     // where the exception occurs
{

    PackageHelper.createPart(package, "/pages.zip" , MediaTypeNames.Application.Zip,
                    (stream) =>
                    {
                        using (var parts = ZipPackage.Open(stream, FileMode.Create))
                        {
                        }
                    }

                    );
}

我真的不知道是什么问题,请帮我解决。

这可能与您将目录传递到Package.Open的第一个参数而不是文件名有关吗?应该是这样的:

// This gives you a directory object. It's all a directory/folder. No File.
DirectoryInfo d = System.IO.Directory.CreateDirectory(path);

// So use the Combine method to create a full path to a file
string fileName = System.IO.Path.Combine(d.FullName, "pages.zip");

...
// Then use that full path to create the Package.
Package.Open(fileName, ...

嗨,蒂姆,我正在传递目录的全名。我要做的是在该目录中创建包,那么如何指定包的路径呢?对,您传递的是目录的全名,而不是文件名。您需要给它一个文件名(目录和文件名)。我认为您出于某种原因已将该部分移动到createPart调用中。如果我只使用d.Name而不是d.FullName,异常确实会消失,但在我运行程序后,文件夹中没有创建包。d.Name仍然只是一个目录。你需要做一个文件名。我将用一个代码示例更新我的答案。非常感谢Tim!成功了!这是我第一次在Stack Overflow上发帖,我真的开始喜欢它了