【问题标题】:Can you choose asp.net runtime in web.config?可以在 web.config 中选择 asp.net 运行时吗?
【发布时间】: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


    【解决方案1】:

    每个应用程序池只能使用一个版本的运行时,并且在 IIS 中进行配置。

    我同意@DanielAWhite 的观点 - 您的供应商需要上一堂软件设计课程。

    See this MSDN article for comments regarding application pool configuration and CLR versions.

    您必须确保所有分配给 application pool target 应用程序池所在的 CLR 有关联。如果您将应用程序分配到应用程序池 与应用程序不同的 CLR 版本相关联 目标,将导致运行时错误。

    但是,您可以在一个站点中拥有多个应用程序,这些应用程序被拆分到单独的文件夹中,并为每个应用程序分配不同的应用程序池,这将允许您在同一站点内使用不同的 CLR 版本.

    【讨论】:

    • 我们在同一个应用程序池中使用 2.0 和 4 的 DLL。
    • @AlexDN 真的吗?根据msdn.microsoft.com/en-us/library/a99txfy5.aspx 和IIS 管理器,每个应用程序池都必须引用单个版本的CLR。现在,使用针对不同版本的框架编译的组件可能是另一回事了。
    • 请参阅 cmets 以获得我的答案。我们只使用 .NET 2.0 的已编译 DLL
    • @AlexDN 您可以在同一个应用程序中使用多达 v3.5 的 DLL,但文档明确指出(通过我刚刚运行的测试确认)v4 和 v2 不能在同一个进程中运行.如果您只使用 2.0 程序集,为什么说您在同一进程中运行 v4 和 v2?
    • 先生们,我认为以下链接可能会有所帮助,请参阅“添加自定义 Web 服务器控件”部分。 msdn.microsoft.com/en-us/library/bb398791.aspx 如果您有一个针对 4.0 的项目,您可以(尝试)使用针对旧版本的自定义控件。但是,正如 OP 指出的那样,可能存在兼容性问题,因为旧控件在新环境中运行时将使用升级的框架组件。
    【解决方案2】:

    您将需要两个不同的应用程序池,因为 .NET Framework 版本是在 IIS 中为每个 appPool 定义的,我认为有两个具有不同 web.config 的文件夹并使用两个不同的应用程序池可以工作,但请记住,它将是更像是让两个 Web 应用程序分开工作,而不是只作为一个应用程序工作。

    您不能更改那个认为在 2012 年强迫您仍然使用 .NET 2.0 的犯罪过时的可怕供应商提供的组件吗?

    【讨论】:

    • 我希望我们可以,但不幸的是,这是一个非常重要的组件。
    【解决方案3】:

    David Lively 对您的直接问题是正确的。正确的操作可能是暂时在 2.0 中运行该站点。如果有问题的控件仅出现在一个小区域中,您还可以考虑将站点划分为两个应用程序池。

    不过,我只是想确保您知道 <system.web><pages> controlRenderingCompatibilityVersion 属性 (MSDN Article)。如果该控件可以在 Framework 3.5(使用 ASP.NET 2.0 运行时)上运行,那么这可能有助于实现重大更改。

    【讨论】:

    • 伪编码器,谢谢 - 知道该选项,尝试过,但对我的方案没有帮助。
    【解决方案4】:

    我们在同一站点内运行 .NET 2 和 4 程序集,在 IIS 7 上没有问题。我不确定,但您可能在 IIS 6 上遇到问题,因为它不能同时运行多个框架版本。你有什么样的问题?如果是客户端问题,请尝试在 web config 中将渲染兼容性设置为 3.5。如果它没有帮助,那么您可以将 web.config 中的目标框架设置为 3.5,但您的整个网站将在 3.5 上运行。

    【讨论】:

    • 同一个站点是一回事,但我相信您在其中有两个 Web 应用程序和两个不同的应用程序池,对吧?
    • 我们在 .NET 4 池上运行的网站上使用 Obout webcontrol 2.0 版。此外,我们在同一个站点上有 Dundas 图表 2.0 版(他们不再支持和销售新版本)。最后,我们使用 MS Enterprise Library .NET 2 作为我们的数据访问层。所有这些都在应用程序池 .NET 4 上并且工作正常 :)
    • @Alex Dn 在 ASP.NET 4 上运行向前兼容的代码与在一个版本中运行一些代码和在另一个版本中运行一些代码不同。
    • @pseudocoder 是的,我认为你是对的,这就是为什么我问他有什么样的问题。
    • @AlexDn - 问题出在客户端,无法访问一个非常具体的属性。供应商的客户支持确认了重大更改。我们尝试以 3.5 为目标,但它对我们没有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2014-03-13
    • 2016-09-22
    • 1970-01-01
    相关资源
    最近更新 更多