如何在.NET 3.5 Web应用程序中使用.NET 4.0 Web应用程序?

问题描述 投票:10回答:6

我的公司有一个内置ASP.NET的网站,目标是.NET 3.5。它过于复杂且庞大,无法及时转换为.NET 4。我的任务是建立票务系统。我希望该票务系统是与主应用程序完全独立的应用程序。

我在网站上添加了一个名为“ TicketingSystem”的目录,然后在IIS中,使用针对.net 4.0的应用程序池将此文件夹设置为应用程序。我以为该应用程序不会受到其上方的应用程序的影响,尤其是因为它使用了自己的应用程序池,但是似乎它受到了某种影响。使用我的.net 4 Web应用程序导航到此目录会产生此错误:

http://www.chevtek.com/content/error.jpg

我介绍了敏感信息,例如文件路径和内容,但是配置文件所在的行具有指向父应用程序配置文件的路径,而不是.net 4应用程序的配置文件。.net 3.5应用程序内不能嵌套.net 4.0应用程序?

编辑

根据要求,这里是IIS目录结构的屏幕快照。

http://www.chevtek.com/content/IISDirectoryStructure.jpg

asp.net .net iis iis-7 .net-framework-version
6个回答
12
投票

很遗憾,Web.config继承不是可以完全关闭的;具体来说,不能在子应用程序内部忽略/覆盖web.config的顶部部分,该部分定义了web.config中存在的配置部分。

解决方案记录在here(asp.net 4 breaking changes documentation)中;本质上,您必须将当前最顶层应用程序中的值上移到特定于machine / FrameworkVersion的配置文件中,然后将所有(或至少大部分)根web.config包装在一个禁用了继承的位置标记中。


1
投票

您是否尝试在父文件夹的web.config文件中将“ inheritInChildApplications”属性设置为“ false”?

请参见Saul Dolgin's answer类似问题的处理方法。


1
投票

在我的应用程序中,通过将<location>元素与<clear />和web.config中的类似元素一起使用,嵌套应用程序或多或少地获得了成功。

这是我的web.config文件的摘录:

<clear />

这个想法是将您要not想要继承的所有节放在这些... <!-- Do not inherit. --> <location path="." inheritInChildApplications="false"> <system.web> ... 元素内的子应用程序中,如上例所示。


0
投票

假设您当前的站点使用针对.NET 2.0的AppPool1

创建AppPool2,将其定位到.NET 4.0并通过应用程序的虚拟目录使用它。


0
投票

请确保该内容不在应用程序池的计算机配置中。如果是这样,只需从您的Web配置中将其删除。


0
投票

编辑:如前所述,调用的第一个端口是确保每个应用程序都有自己的应用程序池。两次和三次检查为同一应用程序池中的.net 3.5站点和.net 4站点将导致整个应用程序池中断。

接下来,请尝试删除整个脚本部分,根据我的经验可以解决此问题,但我没有发现任何问题

© www.soinside.com 2019 - 2024. All rights reserved.