答案 0 :(得分:4)
试试process monitor。它将显示用户正在访问该文件的内容以及正在返回的特定Windows错误代码。然后你应该能够看到为什么它适用于某些文件而不是其他文件。
答案 1 :(得分:1)
当我的代码访问尚未完全写入磁盘的新文件时,我有类似的东西。所以等了几毫秒就解决了我。您是否有可能在将该流完全写入磁盘之前尝试读取该流?
答案 2 :(得分:1)
您的WCF服务是否使用模拟?
这可以解释为什么新的Windows服务可以执行操作但WCF服务无法执行操作。新服务直接针对NAS进行身份验证。如果在旧服务中,WCF模拟调用者,则客户端计算机对用户进行身份验证,将其令牌传递给您的WCF服务,然后该服务将安全令牌传递给NAS,并且您遇到double hop问题。
您可以将活动安全上下文还原为服务帐户,如this:
using (WindowsIdentity.Impersontate(IntPtr.Zero))
{
DoStuff();
}
当然,这并不能解释为什么它可能会间歇性地工作。但它可以解释WCF服务在托管它的机器上本地调用时的工作情况,但不能解释远程客户端机器上的工作。
答案 3 :(得分:1)
我有几次预感。
您是否尝试将“FileAccess.Read”和/或“FileShare.Read”设置为“ReadWrite”?
此外,这个警告可能是一个因素吗?来自http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx:
注意
编译一组字符时 具有特定的文化背景和 用a检索那些相同的字符 不同的文化背景, 字符可能无法解释, 并可能导致例外 抛出。