ExtractToFile抛出访问被拒绝错误?

8
首先,我想强调我使用的是 ASP.NET 4.5 版本,DefaultAppPool (integrated 4.0)。我已经将匿名访问权限配置给了 DefaultAppPool 用户,并且赋予了 DefaultAppPool 所有权限。 System.Security.Principal.WindowsIdentity.GetCurrent() 方法返回的是同一用户。但是当运行以下代码时,会出现 Access to the path 'XXXX' is denied. 异常。为了测试,我已经赋予了 EveryOne 用户所有权限,但仍然遇到相同的错误。以下是代码行,请注意信任。
        using (ZipArchive archive = new ZipArchive(zipStream))
        {
            foreach (ZipArchiveEntry file in archive.Entries)
            {
                file.ExtractToFile(location,true);
            }
        }

以下是 StackTrace:

[UnauthorizedAccessException: Access to the path 'XXX' is denied.]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +10793558
   System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1352
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +65
   System.IO.Compression.ZipFileExtensions.ExtractToFile(ZipArchiveEntry source, String destinationFileName, Boolean overwrite) +96
   XX.XX.XX.ExtractZipFile(Stream zipStream, String location) in XX.cs:44
   XX.XX.XX.XX.XX.XX.ExtractZipFile(Stream zipStream, String location) in XXX.cs:17

默认应用程序池用户是否有访问(读/写权限)所涉及路径的权限? - Tim
@Tim,是的,完全控制。我还给了每个用户完全控制权限。 - Imran Qadir Baksh - Baloch
默认应用程序池用户是否对路径中的所有文件夹具有执行/遍历访问权限? - Frédéric Hamidi
@FrédéricHamidi,请看编辑。我已经给予所有访问权限。 - Imran Qadir Baksh - Baloch
在这种情况下,.NET异常给了我错误的异常。问题是我只传递了位置(文件夹位置而不是文件名)。有人可以将此写为答案,然后我将其作为答案。这样,对其他人也有帮助。 - Imran Qadir Baksh - Baloch
@user960567 - 在等待一段时间后,您可以发布答案并自行接受它。 - Tim
1个回答

25

在这种情况下,.NET框架给了我错误的异常。问题在于,我只传递了位置(只传递文件夹路径而没有包含文件名)。因此,加入完整路径即可解决问题。


这非常有帮助,因为我也做了同样的事情。 - Daniel L. VanDenBosch
我想要点赞,但是似乎一年前我已经投过票了! - Roman Badiornyi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接