![我可以在 .NET3.5 网站内运行 .NET4 应用程序吗?](https://linux22.com/image/549105/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%20.NET3.5%20%E7%BD%91%E7%AB%99%E5%86%85%E8%BF%90%E8%A1%8C%20.NET4%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%90%97%EF%BC%9F.png)
我有一个运行 .NET 3.5 的非常庞大且复杂的 Web 应用程序,其中包含一些经典的 ASP 页面和 VBScript 组件。该网站运行于微软 IIS7,并且是根网站。
理想情况下,我希望在这个运行 .NET 4 的网站下有一个子应用程序,用于部署新组件。但是,这给我带来了困难,并显示以下错误:
如果您要针对 .NET Framework 4.0 或更高版本进行编译,则提供程序选项中“compilerVersion”属性的值必须为“v4.0”或更高版本。要针对 .NET Framework 3.5 或更早版本编译此 Web 应用程序,请从 Web.config 文件的元素中删除“targetFramework”属性。
这可能吗根本,还是应该放弃并寻找其他方法?
答案1
有可能的。
当然,您需要在 Web 服务器上安装这两个框架;然后,您需要配置站点的根目录以使用 3.5 框架运行,以及子应用程序所在的文件夹(或虚拟目录)以使用 4.0 运行。您至少需要两个应用程序池,一个用于 3.5,另一个用于 4.0;您可以使用默认的池(它们是在使用 IIS 注册框架时自动创建的)或创建自定义的池,这取决于服务器的配置。
如果子应用程序与您的主站点无关,那么这就足够了;如果它们需要“对话”,事情就会变得有些棘手,因为主站点和子应用程序实际上将在两个完全不同的运行时环境中运行,即使它们驻留在同一个网站结构中。
答案2
是的,您必须将此子应用程序配置为使用不同的应用程序池运行。您可以创建另一个应用程序池来与 .NET 4 一起运行。
这些文章应该有助于了解如何执行此操作的具体信息:
- http://technet.microsoft.com/en-us/library/cc731784(WS.10).aspx
- http://technet.microsoft.com/en-us/library/cc731755(WS.10).aspx
您还可以(可能应该)将整个站点升级到 .NET 4。大多数内容都应该向后兼容。
答案3
[targetFramework="4.0"]
我通过从节点中删除它来使其工作[compilation]
。
VS 2010,MVC 4 -> .net 4.0,IIS 5。
路由仍然存在问题,但至少默认页面可以工作。