System.UnauthorizedAccessException - 拒绝访问路径

时间:2011-06-24 14:56:15

标签: vb.net wcf .net-4.0 windows-services access-denied

4 个答案:

答案 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检索那些相同的字符   不同的文化背景,   字符可能无法解释,   并可能导致例外   抛出。