IIS 中的网站设置为使用设置为使用 .NET Framework 版本 4.0 的应用程序池。此网站无法加载使用 4.0 编译的 DLL。此网站上的页面输出框架版本 (系统.环境.版本)报告2.0已加载。
为什么这个网站要加载 2.0 框架?如何配置才能加载 4.0 框架?
应用程序池已回收。
此机器上的其他网站正在加载并运行 4.0 框架。
答案1
根据微软的说法:
“应用程序所运行的 .NET Framework 版本按如下方式确定:
“如果计算机上存在构建该应用程序的 .NET Framework 版本,则该应用程序将在该版本上运行。”
该网站是否针对.NET 2.0 进行编译?
要验证目标框架版本和 CLR 版本,您可以使用实用程序 corflags.exe。对于程序集所在的 bin 文件夹,运行以下命令:
for %i in (*.exe,*.dll) do corflags.exe %i
它将显示程序集所针对的 .NET Framework 版本等信息。请注意,您也可以使用 corflags.exe 修改程序集的 PE 标头以针对 .NET 4.0 CLR 版本,但最好在 Visual Studio 中针对 .NET 4.0 重新编译。
如何:使用应用程序配置文件确定 .NET Framework 版本
http://msdn.microsoft.com/en-us/library/9w519wzk.aspx
app.config 中的 supportsRuntime 元素
http://msdn.microsoft.com/en-us/library/w4atty68.aspx
https://stackoverflow.com/questions/2961600/app-config-supportedruntime
Corflags 信息:
https://blogs.msdn.com/b/gauravseth/archive/2006/03/07/545104.aspx
http://msdn.microsoft.com/en-us/library/ms164699%28v=vs.80%29.aspx
答案2
您是否已经检查过下<compilation>
的指令?<system.web>
web.config
答案3
简而言之,它不是那样工作的。将设置应用程序池版本视为设置默认环境如果没有人要求其他东西。如果应用程序池中有 2 个应用程序,其中 1 个使用 2.0,而 1 个使用 4.0,则取决于谁先被调用,以及在该应用程序池中运行的框架版本。管理员可以“修复”此问题(您可能不应该这样做,因为该应用程序可能针对 2.0)的方法是设置 application.config 文件中的supportedruntime(它在运行时下),请参阅<supportedRuntime> 元素