1

我在 IIS7 中建立了一个名为 CCESD 的网站;我的应用程序根文件夹是 D:\Websites\CCESD\CCESD。我在 D:\Websites\CCESD\CCESD\BinCommon 也有一个包含第三方程序集(并非所有这些程序集都是强名称)的文件夹:这是因为我在 IIS 的这个根站点下还有许多其他 Web 应用程序,它们将共享 DLL,其中一些是非托管代码,因此无法进入 GAC。我的 web.config 文件如下所示:

<compilation defaultLanguage="c#" debug="true" targetFramework="4.0"> 
  <assemblies> 
    ... 
    <add assembly="Telerik.Web.UI, Version=2012.1.288.40, Culture=neutral, PublicKeyToken=121FAE78165BA3D4" /> 
  </assemblies> 
</compilation> 

... 

<runtime> 
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <probing privatePath="BinCommon" /> 
  </assemblyBinding> 
</runtime>

但是,当我尝试运行 Web 应用程序时,出现以下错误(在启用程序集绑定错误日志记录之后):

解析器错误消息:无法加载文件或程序集“Telerik.Web.UI,版本=2012.1.288.40,文化=中性,PublicKeyToken=121fae78165ba3d4”或其依赖项之一。该系统找不到指定的文件。

源文件:D:\Websites\CCESD\CCESD\web.config 行:144

程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“Telerik.Web.UI, Version=2012.1.288.40, Culture=neutral, PublicKeyToken=121fae78165ba3d4”。

从以下位置加载程序集管理器:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll

在可执行文件 c:\windows\system32\inetsrv\w3wp.exe 下运行

--- 详细的错误日志如下。

=== 预绑定状态信息 ===

日志:用户 = IIS APPPOOL\CCESD

日志:DisplayName = Telerik.Web.UI,Version=2012.1.288.40,Culture=neutral,PublicKeyToken=121fae78165ba3d4(完全指定)

日志:Appbase = file:///D:/Websites/CCESD/CCESD/

日志:初始 PrivatePath = D:\Websites\CCESD\CCESD\bin 调用程序集:(未知)。===

LOG:此绑定在默认加载上下文中开始。

LOG:使用应用程序配置文件:D:\Websites\CCESD\CCESD\web.configLOG:使用主机配置文件:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config

LOG:使用 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config 中的机器配置文件。

日志:政策后参考:Telerik.Web.UI,版本=2012.1.288.40,文化=中性,PublicKeyToken=121fae78165ba3d4

日志:正在尝试下载新的 URL 文件:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/e11e9098/9e133b72/Telerik.Web.UI.DLL。

日志:尝试下载新 URL 文件:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/e11e9098/9e133b72/Telerik.Web.UI/Telerik.Web.UI .DLL。

日志:尝试下载新的 URL 文件:///D:/Websites/CCESD/CCESD/bin/Telerik.Web.UI.DLL。

日志:尝试下载新的 URL 文件:///D:/Websites/CCESD/CCESD/bin/Telerik.Web.UI/Telerik.Web.UI.DLL。

日志:正在尝试下载新的 URL 文件:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/e11e9098/9e133b72/Telerik.Web.UI.EXE。

日志:尝试下载新 URL 文件:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/e11e9098/9e133b72/Telerik.Web.UI/Telerik.Web.UI 。EXE文件。

日志:正在尝试下载新的 URL 文件:///D:/Websites/CCESD/CCESD/bin/Telerik.Web.UI.EXE。

日志:正在尝试下载新的 URL 文件:///D:/Websites/CCESD/CCESD/bin/Telerik.Web.UI/Telerik.Web.UI.EXE。

我已检查该文件是否存在并且版本和公钥信息是否正确。我究竟做错了什么?

4

1 回答 1

1

我最终找到了它;最后,归结为:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

我的项目开始于 Visual Studio 2005;因此上面显示的 xmlns 属性存在于我的 web.config 文件的包含元素中。删除它解决了问题,现在我的程序集正在正确加载。

谷歌搜索显示 xmlns 属性可以在 Visual Studio 中启用智能感知(确实如此):它没有说明对加载程序集有任何影响,所以这有点奇怪(更不用说烦人了)。不过,现在它正在工作。

于 2012-08-06T05:43:45.847 回答