IIS中的网站设置为使用设置为使用.NET Framework版本4.0的应用程序池。 该网站未能加载用4.0编译的DLL。 本网站上的页面输出框架版本( System.Environment.Version )报告2.0加载。
为什么这个网站加载2.0框架? 如何configuration加载4.0框架?
应用程序池已被回收。
此框中的其他网站正在加载并运行4.0框架。
根据微软:
“运行应用程序的.NET Framework的版本如下确定:
“如果应用程序所针对的.NET Framework版本存在于计算机上,则应用程序将在该版本上运行。”
网站是否被编译为目标.NET 2.0?
要validation目标的框架版本和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可能会更好。
如何:使用应用程序configuration文件来定位.NET Framework版本
http://msdn.microsoft.com/en-us/library/9w519wzk.aspx
app.config中的supportedRuntime元素
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
你是否已经检查过web.config <system.web>下的<compilation>指令?
简而言之,它不会那样工作。 如果没有人要求其他任何东西 ,可以将应用程序池版本设置为默认环境。 如果2个应用程序位于应用程序池中,1个使用2.0和1则使用4.0,这取决于谁先被调用到在该应用程序池中运行的框架的版本。 pipe理员可以“修复”这个(你可能不应该,因为应用程序可能瞄准在2.0)的方式是通过设置在application.config文件(它在运行时)的supportedruntime看到<supportedRuntime>元素