如何强制IIS使用.NET 4.6或4.5.x或更低版本?

问题描述:

我在我的web应用程序中使用了XslCompiledTransformer。不幸的是,最新的.NET更新4.7版不再适用。 (我有this issue如何强制IIS使用.NET 4.6或4.5.x或更低版本?

我希望微软快速提出解决方案,但同时我想强制我的应用程序使用.NET 4.6运行。

这是我已经尝试过:

  • supportedRuntime标记在web.config文件
  • 设置目标框架的web应用项目到.NET 4.6/4.5

谢谢你为你的答案!

+2

4.7是4.x行的*就地更新*。你必须从服务器上卸载4.7才能完成这项工作。 –

+0

不幸的是,这不是一种选择,因为该应用程序已推广到很多客户。我们不能去卸载.NET Framework 4.7的每一个。 –

+0

我现在正在为我们的软件创建一个更新,以使用'XslTransformer'而不是'XslCompiledTransformer'作为解决方法,但这当然对性能不利,因此不是优选的 –

您正在运行4.7 jit中的尾部递归消除错误。您可以通过禁用优化来解决此问题:将环境变量COMPlus_TailCallLoopOpt设置为0,或者在HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework或HKEY_CURRENT_USER \ SOFTWARE \ Microsoft.NETFramework下创建一个名为TailCallLoopOpt的DWORD值,并将其设置为0.

+0

*哪一个*会设置这个?它是一个编译器选项吗?要添加到'web.config'的设置?注册表设置?还有别的吗? –

+0

这是一个环境变量。您还可以在注册表中将其设置为0,作为位于HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework或HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ .NETFramework下的名为TailCallLoopOpt的DWORD值。 –

+1

**编辑**您的答案。包含这些信息。包含更多信息的链接(如果存在)。就目前而言,你自己的答案本身并不能帮助那些不知道你正在谈论的内容的人。 –