C# Package.Open()异常:对路径的访问被拒绝
我一整天都在试图解决这个问题,但不管我做什么,我总是得到相同的异常:UnauthorizedAccessException在第行未处理 使用(Package-Package=Package.Open(d.FullName,FileMode.Create,FileAccess.ReadWrite)) 完整代码为: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
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上发帖,我真的开始喜欢它了