【发布时间】:2012-01-18 01:14:10
【问题描述】:
我们已将 asp.net 运行时从 2.0 升级到 4.0 - 结果是供应商提供的控件发生了重大变化。我们的整个站点都在 asp.net runtime 4.0 上。是否可以将 asp.net runtime 2.0 用于一些控件(使用某些指令)或文件夹(使用 web.config)?
【问题讨论】:
标签: asp.net
我们已将 asp.net 运行时从 2.0 升级到 4.0 - 结果是供应商提供的控件发生了重大变化。我们的整个站点都在 asp.net runtime 4.0 上。是否可以将 asp.net runtime 2.0 用于一些控件(使用某些指令)或文件夹(使用 web.config)?
【问题讨论】:
标签: asp.net
每个应用程序池只能使用一个版本的运行时,并且在 IIS 中进行配置。
我同意@DanielAWhite 的观点 - 您的供应商需要上一堂软件设计课程。
See this MSDN article for comments regarding application pool configuration and CLR versions.
您必须确保所有分配给 application pool target 应用程序池所在的 CLR 有关联。如果您将应用程序分配到应用程序池 与应用程序不同的 CLR 版本相关联 目标,将导致运行时错误。
但是,您可以在一个站点中拥有多个应用程序,这些应用程序被拆分到单独的文件夹中,并为每个应用程序分配不同的应用程序池,这将允许您在同一站点内使用不同的 CLR 版本.
【讨论】:
您将需要两个不同的应用程序池,因为 .NET Framework 版本是在 IIS 中为每个 appPool 定义的,我认为有两个具有不同 web.config 的文件夹并使用两个不同的应用程序池可以工作,但请记住,它将是更像是让两个 Web 应用程序分开工作,而不是只作为一个应用程序工作。
您不能更改那个认为在 2012 年强迫您仍然使用 .NET 2.0 的犯罪过时的可怕供应商提供的组件吗?
【讨论】:
David Lively 对您的直接问题是正确的。正确的操作可能是暂时在 2.0 中运行该站点。如果有问题的控件仅出现在一个小区域中,您还可以考虑将站点划分为两个应用程序池。
不过,我只是想确保您知道 <system.web><pages> controlRenderingCompatibilityVersion 属性 (MSDN Article)。如果该控件可以在 Framework 3.5(使用 ASP.NET 2.0 运行时)上运行,那么这可能有助于实现重大更改。
【讨论】:
我们在同一站点内运行 .NET 2 和 4 程序集,在 IIS 7 上没有问题。我不确定,但您可能在 IIS 6 上遇到问题,因为它不能同时运行多个框架版本。你有什么样的问题?如果是客户端问题,请尝试在 web config 中将渲染兼容性设置为 3.5。如果它没有帮助,那么您可以将 web.config 中的目标框架设置为 3.5,但您的整个网站将在 3.5 上运行。
【讨论】: