升级到 .net 4.0 后无法加载文件或程序集 'AjaxControlToolkit'

15

我有一个Web应用程序,我试图将其升级到.NET 4.0。

我使用Visual Studio 2010 Beta 2打开了该应用程序,并为该应用程序选择了升级路径。该应用程序使用AjaxControlToolkit。现在升级完成后,当我尝试访问页面时,我收到错误消息:“无法加载文件或程序集“AjaxControlToolkit” 或其某个依赖项。拒绝访问。”

我已经尝试过:

  • 重启我的机器
  • 清理解决方案
  • 删除Temporary ASP.Net Files中的所有文件
  • 放宽Bin目录、Temporary ASP.Net Files目录上的权限(添加Everyone并授予完全控制权)
  • 移除并重新添加对AjaxControlToolkit DLL的引用

与AjackControlToolkit相关的web.config条目如下:

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
  <controls>
    <add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
  </controls>
</pages>
任何想法关于这里发生了什么/我如何解决这个问题?

1
+1:快速测试以查看是否与用户模拟权限相关是授予您的模拟帐户本地管理员权限。如果问题消失,则需要为该帐户分配特定的访问权限以访问IIS文件。 - iCollect.it Ltd
1
对于那些遵循了所有建议但仍然存在问题的人,这个链接可能会有所帮助。https://dev59.com/F2gu5IYBdhLWcg3wxZpL#23534971 - Yorro
11个回答

17

我遇到了类似的问题,但通过为我的模拟身份授予“Temporary ASP.NET Files”文件夹的完全权限来解决了问题。


8
我通过将模拟用户添加到我在Vista工作站上的IIS_IUSRS组来解决了这个问题。 - jrummell
4
我知道这是一个旧的线程,但我在这里评论只是为了强调这个答案和jrummell的评论。将模拟用户添加到IIS_IUSRS组可以完全访问临时ASP.NET文件目录。它还能做什么?我不知道,但我认为这比仅授予该目录特定权限更加“正确”。用户运行ASP.NET应用程序需要什么其他权限?我不知道,但这个组应该拥有它们,对吗? - JeffK
1
对我来说,这个问题的解决方法是给予模拟用户(如果web.config启用了impersonate=true但没有指定用户名,则为*IUSR_[machinename]*)对我的Web应用程序文件夹的修改、读取和执行权限,并确保这些权限传递到所有子文件夹中(点击高级按钮)。 - MGOwen
4
我也遇到了同样的问题,Jeremy的解决方案对我有效。我尝试授予经过身份验证的用户在网站根目录及其所有子文件夹和文件上的完全控制权限,但仍然没有改变。然后我尝试授予经过身份验证的用户对"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files"文件夹的完全控制权限,这对我解决了问题。 - Josh
2
跟随 Jeremy 和 Josh,我可以确认这个解决方案在 .NET 4.5.2 上对我有效。 - midoriha_senpai

7
我知道已经有一个被接受的答案,但是对于通过搜索错误代码来到此页面的其他人...请检查您尝试模仿的用户的权限。在我的情况下,我只在开发机上遇到了这个错误,而没有在我们的暂存或部署服务器上遇到过。(一段时间内,我通过从我的开发环境中删除配置中的'identity'节点,并在后期构建时添加该行来解决这个问题,因此除了我之外,它对任何人都不会造成问题...) 在我的环境中,我们有一个特定的用户,当运行时所有的网络应用程序都会模拟。我已经创建了这个用户帐户,但没有明确设置其帐户权限。当我在我的开发机上将用户添加为管理员时,这个问题完全消失了。(虽然不理想,但对我来说“可行”,而且因为该用户帐户在我们的“真实”服务器上被锁定,所以最小化了损害...)

4

我认为关于C:\Windows\Microsoft.NET\Framework64\v4.0.21006\Temporary ASP.NET Files[projectName]中的临时文件的帖子是正确的。

我通过编辑权限来解决问题,以确保ASP模拟用户(在IIS的安全部分中找到的匿名用户,应用程序在允许匿名访问时应使用该用户)对目录具有适当的安全性。

问题已解决... 访问被拒绝通常指权限问题。


3

当我在新的Windows Server 2008机器上重新安装我的ASP.NET应用程序时,我收到了这个错误消息(尽管是另一个dll文件)。我搜索了数小时以寻找解决方案,并尝试了所有可能的方法,但都没有成功。直到我停用了McAfee杀毒软件。当我这样做时,一切都像魔法般地正常工作了。


2

我不完全确定为什么这样做可以解决问题,但是在适当的临时ASP.Net文件目录下(位于:C:\Windows\Microsoft.NET\Framework64\v4.0.21006\Temporary ASP.NET Files[projectName]),我手动复制了AjaxControlToolkit.dll。

然后我发现还有其他缺失的DLL文件,但是我也将它们手动复制到这个位置,就可以解决这些问题了。这似乎不是最好的答案,但对我来说确实起作用了。


1
只是出于好奇,你有没有尝试过删除所有临时文件? - NotMe
1
我尝试过只删除所有临时文件,但没有成功。 - ChrisHDog

2

我尝试给模拟用户完全权限访问临时ASP.NET文件夹,但是这并没有起作用。我记得在过去遇到这个错误时,这样做可以解决问题。

我知道提问者也尝试过这个方法,但是当我在Visual Studio中删除/添加AjaxToolKit时,它对我有用。我建议先尝试他所做的一切。希望这能帮助到某些人。


2
你可以尝试这个:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\。只需清理此文件夹中所有文件和文件夹,并编译您的应用程序。愉快编码!

1

怪异的错误。您的web.config文件中是否有任何指向AjaxControlToolkit的公钥令牌或其他程序集规范?这种情况曾经发生在我身上,其中某个值已更改或我从GAC的引用更改为本地引用...

希望对您有所帮助。


1

我遇到了同样的问题。经过大量研究,我发现我在配置文件中使用了模拟身份。我不得不将模拟身份ID更改为服务器本地的另一个用户,这立即解决了问题。


1
检查DLL文件的属性。如果某处声明“此文件来自另一台计算机”,请勾选复选框并点击“应用”以解除Windows设置的限制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接