gpt4 book ai didi

.net - 在 %temp% 中读取文件时出现随机 UnauthorizedAccessException

转载 作者:行者123 更新时间:2023-12-04 20:45:24 24 4
gpt4 key购买 nike

我有一个在临时目录中写入文件的进程。该文件是在没有共享读取权限的情况下写入的,因此如果有人在写入文件时试图读取该文件,则 IOException会被抛出,这很好。

在极少数情况下,我似乎收到 UnauthorizedAccessException在尝试读取此文件时。我相当确定(从日志中)该文件没有被写入,但我看不出有任何其他原因我无法访问它。

此外,该进程从 Visual Studio 扩展运行,这意味着它具有与父进程(Visual Studio 本身)相同的权限。

这是我尝试打开文件的方法:

new FileStream(cacheFileName, FileMode.Open, FileAccess.Read, FileShare.Read);

有时,这一行会抛出 UnauthorizedAccessException .任何想法为什么?

最佳答案

这绝对不是共享问题,它会生成共享冲突错误并报告 IOException。

UnauthorizedAccessException 只有两个不错的解释。一种是逻辑上的,文件是使用自定义 ACL 创建的,该 ACL 只是拒绝访问。在这种情况下,您需要更多地了解创建文件的过程并将其重击一遍,以便它停止执行此操作。控制该进程使用的用户帐户可能很重要。

第二种解释与许多进程在 TEMP 目录中创建文件和目录的变幻莫测有关。在那里创建的文件是事务性的,并且允许系统生成文件名,从而确保永远不会发生名称冲突,这一点非常重要。让一个进程创建一个文件并允许另一个进程打开它是自找麻烦。当 TEMP 目录包含与您尝试打开的文件同名的目录时,您将收到 UnauthorizedAccessException。

如果这种情况很少发生并且文件很快又消失了,那么调试这个问题就很棘手。您可以 enable auditing记录打开文件的失败尝试。

关于.net - 在 %temp% 中读取文件时出现随机 UnauthorizedAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18609996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com