IIS 7 无法加载 DLL(拒绝访问)

Posted

技术标签:

【中文标题】IIS 7 无法加载 DLL(拒绝访问)【英文标题】:IIS 7 unable to load DLL (Access Denied) 【发布时间】:2011-08-18 14:43:12 【问题描述】:

我在 Windows 7 上遇到了 IIS 7 这个奇怪的问题,它无法加载我正在使用的 dll。但是,它似乎只在一段时间后发生;在它开始抛出此消息之前,它可以在一段时间内正常工作:

Could not load file or assembly 'Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its dependencies. Access is denied.

如果我删除 dll 并重新添加它,它会在一段时间内正常工作,然后再次停止工作。这在 asp.net 网页和 web 服务中都会发生,但是在普通的 .net 桌面程序中它可以正常工作。

这只发生在 Mono.Security 上,而不是我正在使用的任何其他 dll(我正在使用依赖于 Mono.Security 的 Npgsql)。

如果有人能对此提供一些见解,那就太好了。

【问题讨论】:

【参考方案1】:

检查 DLL 文件/文件夹的文件权限,以确保您的 ASP.NET AppPool 帐户可以访问该文件。

确保文件的权限从父级继承 - 可能会重置这些权限。

【讨论】:

问题是,它可以正常工作一段时间,然后随机停止工作。那时权限看起来仍然很好。另外,只是为了测试我的 ASP.NET 目前正在我的用户帐户上运行,该帐户拥有该文件... 如果您授予“所有人”对文件/文件夹的读取/执行权限,这是否会使问题消失? 看看这是否有帮助...blogs.msdn.com/b/sayanghosh/archive/2007/04/21/… 认为每个人都成功了!为了获得帮助,我将您的答案作为已接受的答案。 @Leon 我的问题是 dll 从它的父级获得了权限,我删除了它们,瞧!它现在正在工作......【参考方案2】:

也许您在那些时候正在执行备份?只是在黑暗中拍摄... 此外,在您的 web.config 中,您无需定义版本、文化或公钥即可使用程序集。也许这与它有关。

【讨论】:

嗯.. 没有进行备份,所以我猜不是这样。我没有直接将它添加到 web.config 文件中,我在 VS 中添加了 DLL 作为参考,所以我怀疑版本/文化/pk 是问题,但我想它可能。 这看起来很像你所面临的......试一试也无妨:blogs.msdn.com/b/sayanghosh/archive/2007/04/21/…

以上是关于IIS 7 无法加载 DLL(拒绝访问)的主要内容,如果未能解决你的问题,请参考以下文章

无法加载 DLL 'SQLite.Interop.dll

急! iis6.0发布网站后无法加载dll(dll只有一个)急,在线等。。。。

无法加载DLL'SQLite.Interop.dll

无法加载文件或程序集或其依赖项之一。访问被拒绝。问题是随机的,但发生一次后,它会继续

iis6.0+php5.6无法加载firebird模块

WinDbg 无法加载 SOS.dll