我在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
LOG:DisplayName = Telerik.Web.UI,Version = 2012.1.288.40,Culture = neutral,PublicKeyToken = 121fae78165ba3d4(Full-specified)
日志:Appbase = file:/// D:/网站/ CCESD / CCESD /
日志:初始PrivatePath = D:\ Websites \ CCESD \ CCESD \ bin呼叫 汇编:(未知)。 ===
日志:此绑定在默认加载上下文中启动。
日志:使用应用程序配置文件: D:\ Websites \ CCESD \ CCESD \ web.configLOG:使用主机配置文件: C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config
日志:使用来自的机器配置文件 C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中
。日志:政策后参考:Telerik.Web.UI,版本= 2012.1.288.40, Culture = neutral,PublicKeyToken = 121fae78165ba3d4
日志:尝试下载新网址 文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files / root / e11e9098 / 9e133b72 / Telerik.Web.UI.DLL。
日志:尝试下载新网址 文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET 文件/根/ e11e9098 / 9e133b72 / Telerik.Web.UI / Telerik.Web.UI.DLL。
日志:尝试下载新网址 文件:/// d:/Websites/CCESD/CCESD/bin/Telerik.Web.UI.DLL
日志:尝试下载新网址 文件:/// d:/Websites/CCESD/CCESD/bin/Telerik.Web.UI/Telerik.Web.UI.DLL
日志:尝试下载新网址 文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files / root / e11e9098 / 9e133b72 / Telerik.Web.UI.EXE。
日志:尝试下载新网址 文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET 文件/根/ e11e9098 / 9e133b72 / Telerik.Web.UI / Telerik.Web.UI.EXE。
日志:尝试下载新网址 文件:/// d:/Websites/CCESD/CCESD/bin/Telerik.Web.UI.EXE
日志:尝试下载新网址 文件:/// d:/Websites/CCESD/CCESD/bin/Telerik.Web.UI/Telerik.Web.UI.EXE
我已检查过该文件是否存在且版本和公钥信息是否正确。我做错了什么?
答案 0 :(得分:1)
我最终找到了它;最后,归结为:
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
我的项目开始于Visual Studio 2005;因此,上面显示的xmlns属性出现在我的web.config文件的contains元素中。删除它修复了问题,现在我的程序集正确加载。
谷歌搜索显示xmlns属性是在Visual Studio中实现智能感知(确实如此):它没有说明对加载程序集有任何影响,所以这有点奇怪(更不用说烦人)。不过,现在它正在发挥作用。