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

我找到了大量有关此错误的信息:'ERROR: Could not load file or assembly ' * .dll ' or one of its dependencies. Access is denied.’ But i haven' t找到了特定于我的方案的答案 . 我的站点部署在6个不同的 生产环境 服务器上,只在一台服务器上我正面临这个问题 . 问题是随机的,但是在它发生一次之后,它会一直持续到网站重新编译为web.config文件中的一个小修改(我知道技巧,在web.config中重新编译后重新编译Web应用程序)和该服务器上的站点启动工作 . 昨天,问题在一个月的工作期后再现 . 我们无法承担这个 生产环境 问题 .
问题详情:

'/'应用程序中的服务器错误 . ____________________________________无法加载文件或程序集“MainCore.DbImpl,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一 . 访问被拒绝 . 描述:执行当前Web请求期间发生未处理的异常 . 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息 . 异常详细信息:System.IO.FileLoadException:无法加载文件或程序集“MainCore.DbImpl,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null”或其依赖项之一 . 访问被拒绝 . 源错误:在执行当前Web请求期间生成了未处理的异常 . 可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息 . 程序集加载跟踪:以下信息有助于确定无法加载程序集“MainCore.DbImpl,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null”的原因 . 警告:装配绑定日志记录已关闭 . 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失 . 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog] . 堆栈跟踪:[FileLoadException:无法加载文件或程序集'MainCore.DbImpl,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一 . 访问被拒绝 . ] ... DbImpl.Event.TTCEventController.GetEventFields(Int32 eventId)0 . 根\ SportChannel中的WebSuite.SportChannel.ModelImpl.TTCModelController.AddEventFieldList(XmlElement eventNode,ITTCEventController ctrl,Int32 eventId,PlayerType stupidType) ModelImpl \ Ttc \ TTCModelController.cs:171 ... ModelImpl.TTCModelController.GetLatestFourTourSchedulesXml()in ... root \ SportChannel \ ModelImpl \ Ttc \ TTCModelController.cs:283 ... WebRoot.UserControls.HeadlinesTab.Page_Load(Object sender, EventArgs e)491 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)25 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)42 System.EventHandler.Invoke( Object sender,EventArgs e)0 System.Web.UI.Control.OnLoad(EventArgs e)132 System.Web.UI.Control.LoadRecursive()66 System.Web.UI.Control.LoadRecursive()191 System.Web.UI .Control.LoadRecursive()191 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeA syncPoint,Boolean includeStagesAfterAsyncPoint)2428 ____________________________________版本信息:Microsoft .NET Framework版本:2.0.50727.5446; ASP.NET版本:2.0.50727.5420

回答(20)

3 years ago

对于我的场景,我发现web.config文件中有一个标识节点 .

<identity impersonate="true" userName="blah" password="blah">

当我从节点中删除userName和password参数时,它开始工作 .

另一个选项可能是您需要确保指定的userName有权使用各种C:\ Windows \ Microsoft.NET \ Framework 文件夹中的“Temporary ASP.NET Files”文件夹 .

希望这有助于其他人!

3 years ago

有同样的问题,修复了将参数 "Enable 32-bit applications" 设置为 "true" (在iis应用程序池的高级设置中) .

3 years ago

我的解决方案如下:

我在 C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 下找不到根文件夹 .

Google告诉我这可能是针对当前用户的权限问题,然后我发现我在故障服务器中有一个当前身份: IIS APPPOOL ,其中服务器的其余部分具有当前身份: NT AUTHORITY\NETWORK SERVICE .

然后我将当前身份从 IIS APPPOOL 更改为 NT AUTHORITY\NETWORK SERVICE .

从这里,我发现重置网络应用程序重建临时ASP.NET缓存,解决问题 .

3 years ago

To anyone else who tried most of the solutions and still having problems.

我的解决方案不同于其他位置,位于此帖的底部,但在您尝试之前请确保您已经用尽了以下列表 . 可以肯定的是,我已经尝试了所有这些,但无济于事 .

  • 从头开始重新编译和重新部署,不要更新现有应用程序 . SO Answer

  • 授予IIS_IUSRS对目录"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files"的完全访问权限

请记住您正在使用的框架版本 . 如果您的应用使用模拟,请使用该标识而不是IIS_IUSRS

  • 删除目录"C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files"的所有内容 .

请记住您正在使用的框架版本

  • 更改您的应用正在使用的AppPool的身份,从ApplicatonPoolIdentity更改为NetworkService .

IIS>应用程序池>选择当前应用程序池>高级设置>标识 .

SO Answer(如果不起作用,请恢复默认值)

  • 验证IIS版本和AppPool .NET版本与您的应用程序的兼容性 . 非常适用于首次部署 . SO Answer

  • 验证模拟配置(如果适用) . SO Answer

My Solution:

我发现某些反病毒软件正在主动阻止目录"Temporary ASP.NET Files"中的DLL编译,我的是McAfee,IT人员没有通知我安装 .

根据McAfee专家和Microsoft的建议,您需要在实时扫描中排除目录"Temporary ASP.NET Files" .

Sources:

Don 't disable the Anti-Virus because it is only doing its job. Don' t手动复制目录\ Temporary ASP.NET Files 中缺少的DLL文件,因为那是管道编带 .

3 years ago

如果您使用模拟,请务必向以下文件夹中的相关用户帐户授予权限,包括 writemodify 权限:

C:\Users\[username]\AppData\Local\Temp\Temporary ASP.NET Files

我错过了修改权限,这就是为什么添加默认权限对我不起作用的原因 .

3 years ago

如果您仍然面临问题,请尝试以下方法:

打开IIS管理器 - >应用程序池 - >选择您的应用程序池 - >高级设置 - >在“过程模型”下将“加载用户配置文件”设置为True

enter image description here

3 years ago

我有同样的问题,通过重建和重新部署 ALL Dependents Dll文件修复

3 years ago

转到IIS - >应用程序池 - >高级设置 - >启用32位应用程序

3 years ago

检查IIS设置 . 我在.NET框架中使用IIS 7.5进行32位或64位编译 . 如果您的应用程序使用32位模式,请确保启用应用程序池以使用32位指令 . 否则,无论你设置多少安全性或强大的DLL符号,似乎没有任何工作 .

3 years ago

我相信我浪费了一天的时间来研究它,这就是我所得到的 .

您需要将模拟用户添加到解决方案的Debug文件夹中,因为框架将尝试从此位置访问DLL并将其放在Temporary Asp.Net文件夹中 .

所以基本上遵循这两个步骤

  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files 下授予临时Asp.Net文件夹的权限,并确保您在此处添加的用户与您在模拟时使用的用户相同 .

  • 将模拟用户添加到Solution YourSolutionPath .. \ bin \ Debug的Debug文件夹中

这应该工作

3 years ago

在我的情况下,这是由于我的防病毒(McAfee)的访问保护功能 . 显然阻止访问此文件,因为这样的错误 .

我禁用了它,解决方案运行了 . 您可能希望检查可能正在运行的任何可能影响对某些文件的访问的实用程序应用程序 .

3 years ago

在我的情况下,我没有使用模仿 . 我的解决方案是为用户组“IIS_IUSRS”提供对项目目录的完全访问权限 .

3 years ago

Go to run  : ctrl + R
 Type : %temp%

删除所有文件和文件夹

Rebuild Project.
 done!

3 years ago

我遇到了这个问题,事实证明,Windows正在加密引用的包/程序集 . 发生这种情况是因为我的公司实施了一项政策,要求加密我的文档文件夹,并且我的Visual Studio解决方案恰好位于该目录下 .

我可以手动进入Windows资源管理器中的文件/目录属性并禁用加密 . 但就我而言,这是一个临时解决方案,因为网络政策最终会改变它 . 我将我的VS解决方案移到另一个未加密的位置 .

3 years ago

在我的情况下,我已经将服务从一个服务器复制到另一个服务器而没有执行适当的部署视觉工作室 . 很长的故事 .

无论如何,我已经设置了所有适当的NTFS权限和诸如此类的东西,但它仍然无法加载服务的主DLL .

我通过将相应的service.pdb文件重命名为其他内容来修复它 .

例如,这是我的bin文件夹: \bin\ service.dll service.dll.config service.pdb 我将service.pdb重命名为zzservice.pdb,然后加载了service.dll .

3 years ago

我从VS运行此错误 . 原来我打开了一个解决方案而没有以管理员身份运行Visual Studio . 关闭Visual Studio并再次以管理员身份运行它然后重建为我解决了这个问题 .

希望能帮助别人 .

3 years ago

在我的情况下,我使用简单的模拟,模仿用户无法访问其中一个项目程序集 . 我的解决方案

  • 查找内部异常的消息以识别有问题的程序集 .

  • 修改程序集文件的安全性属性 .

a)将您用于模拟的用户帐户添加到组和用户名 .

b)授予该用户帐户对程序集文件的完全访问权限 .

3 years ago

我在新服务器上设置环境 . 我的web.config得到了如下的身份节点 . 当我遇到“无法加载文件或程序集或其中一个依赖项 . 访问被拒绝 . 问题是随机的,但在它发生一次后,它继续”

添加了ccs \ HJKWeb作为我的新服务器的用户列表 .

<authentication mode="Windows" />
        <identity impersonate="true" password="******" userName="ccs\HJKWeb" />

3 years ago

如果找不到DLL而不是拒绝访问,请确保安装了相应的VC Redistributable .

3 years ago

对我来说,以下黑客工作;转到IIS - >应用程序池 - >高级设置 - >过程模型 - >从内置帐户(ApplicationPoolIdentity)更改为自定义帐户(我的域用户)