C# 无法加载文件或程序集';Web,版本=4.0.0.0,文化性=neutral';或者它的一个依赖项。访问被拒绝

C# 无法加载文件或程序集';Web,版本=4.0.0.0,文化性=neutral';或者它的一个依赖项。访问被拒绝,c#,asp.net,iis,C#,Asp.net,Iis,好像已经有100多个这样的问题了。。我已经搜索了很多,他们似乎没有提出任何我还没有尝试过的东西 我得到一个错误: Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Access is denied. Description: An unhandled excep

好像已经有100多个这样的问题了。。我已经搜索了很多,他们似乎没有提出任何我还没有尝试过的东西

我得到一个错误:

Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral,    PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Access is denied. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileLoadException: Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Access is denied.

Source Error: 



Line 44:         private static IKernel CreateKernel()
Line 45:         {
Line 46:             var kernel = new StandardKernel();
Line 47:             try
Line 48:             { 
上面的代码存在于我的Ninject初始值设定项中

我已向所有人授予以下权限:

C:\Windows\Microsoft.NET\Framework\v4.0.30319

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework

FusionLog详细信息:

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Program Files (x86)\IIS Express\iisexpress.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = System.Web, Version=4.0.0.0, Culture=neutral,    PublicKeyToken=b03f5f7f11d50a3a
(Fully-specified)
LOG: Appbase = file:///F:/TFS/MMSChange/Main/SMRH.MMSChange/SMRH.MMSChange.Web/
LOG: Initial PrivatePath = F:\TFS\MMSChange\Main\SMRH.MMSChange\SMRH.MMSChange.Web\bin
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Found application configuration file     (F:\TFS\MMSChange\Main\SMRH.MMSChange\SMRH.MMSChange.Web\web.config).
我还授予了everyone对代码文件夹的权限。我试过运行ProcMon(它曾经帮助我解决过不同解决方案的类似问题);但它不会为system.web.dll创建单个条目

我内置了模仿功能。我使用单独的帐户访问数据库,而对数据库帐户的模拟破坏了这一点。没有模拟,应用程序运行良好。(但没有数据,因为所有db调用都失败)


有趣的是,如果我将相同的代码部署到本地机器上,并通过IIS网站运行它:它可以工作。但如果我只是从IDE调试它,它就会失败

我认为您需要为IIS注册.net Freamework 4.0以解决上述问题。 以下是步骤

  • 以管理员身份打开命令提示符
  • 在命令提示符中导航到“C:\Windows\Microsoft.NET\Framework\v4.0.30319”目录 [使用命令
    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
    ]
  • 为IIS注册.net FrameWork [使用命令
    aspnet\u regiis.exe-i
    ]
  • 重新启动IIS[使用命令
    iisreset
    ]
  • 完成了

  • 好的,我找到了解决办法

    经过数小时的调试并联系Microsoft支持人员,结果一无所获。我决定从头开始。我得到了另一个运行和过滤结果的ProcMon实例,只显示IISExpress结果(因为这是一个给我带来错误的实例)

    然后我从IDE编译并启动了我的应用程序,并等待错误的出现。得到错误后,我通过“拒绝访问”过滤结果

    通常我会过滤结果以查找system.web.dll,但这次我决定忽略它

    我发现唯一拒绝访问的文件是:“C:\Users\1roj1\Documents\IISExpress\config\aspnet.config”(其中1roj1是我的用户帐户)


    我给了我的模拟用户对这个文件的完全访问权,瞧,一切都正常了

    很奇怪。这是在IDE中发生的吗?你是以管理员的身份运行的吗?我过去从来没有这样做过。我现在就试试。哦,我忘了提到,这种情况也会发生,因为我内置了模仿功能。我使用不同的帐户来访问数据库,这种模拟破坏了这一点。在没有模拟的情况下,应用程序运行良好。如果以管理员身份运行IDE,则不会有任何运气。请打开fusion日志记录。看看它试图在哪里找到二进制文件。谢谢威尔,我打开了它,并用Fusion日志更新了第一篇文章。。我已经让每个人都可以访问fusionLog显示的文件夹。此外,“我的应用程序代码”的bin文件夹中永远不存在system.web.dll。我查找了我所从事的每个项目。谢谢Sudhansu,我找到了解决方案。。我已经把它贴在下面了。感谢您不仅分享了解决方案,还分享了故障排除步骤。真的,老实说,我怀疑这是否有帮助。但它奏效了。我的情况有点复杂(读作噩梦)identity impersonate=“true”0-身份验证模式=“Windows”-以管理员权限运行的Visual Studio-IIExpress-未连接到DC的虚拟机