Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在.NET 3.5 web应用程序中使用.NET 4.0 web应用程序?_Asp.net_.net_Iis_Iis 7_.net Framework Version - Fatal编程技术网

Asp.net 如何在.NET 3.5 web应用程序中使用.NET 4.0 web应用程序?

Asp.net 如何在.NET 3.5 web应用程序中使用.NET 4.0 web应用程序?,asp.net,.net,iis,iis-7,.net-framework-version,Asp.net,.net,Iis,Iis 7,.net Framework Version,我的公司有一个ASP.NET网站,目标是.NET3.5。它太过凌乱和庞大,无法及时转换为.NET4。我的任务是建立一个票务系统。我希望这个票务系统是一个完全独立的应用程序,从主应用程序 我在网站上添加了一个名为“TicketingSystem”的目录,然后在IIS中使用一个以.net 4.0为目标的应用程序池将该文件夹设置为一个应用程序。我假设这个应用程序不会受到上面的应用程序的影响,特别是因为它使用自己的应用程序池,但它似乎受到了某种影响。导航到此目录(其中包含my.net 4 web app

我的公司有一个ASP.NET网站,目标是.NET3.5。它太过凌乱和庞大,无法及时转换为.NET4。我的任务是建立一个票务系统。我希望这个票务系统是一个完全独立的应用程序,从主应用程序

我在网站上添加了一个名为“TicketingSystem”的目录,然后在IIS中使用一个以.net 4.0为目标的应用程序池将该文件夹设置为一个应用程序。我假设这个应用程序不会受到上面的应用程序的影响,特别是因为它使用自己的应用程序池,但它似乎受到了某种影响。导航到此目录(其中包含my.net 4 web app)会生成以下错误:

我讨论了敏感信息,比如文件路径和其他内容,但行中说配置文件有一个指向父应用程序配置文件的路径,而不是.NET4应用程序的配置文件。 无法在.net 3.5应用程序中嵌套.net 4.0应用程序吗

编辑 根据要求,这里是IIS目录结构的屏幕截图

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


接下来,尝试删除整个脚本部分组,根据我的经验,它解决了问题,而且我没有注意到任何问题

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


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

确保应用程序池的计算机配置中没有这些内容。如果是这样,只需将其从web配置中删除。

在我的应用程序中,我通过使用
元素以及web.config中的和类似元素,或多或少成功地使用了嵌套的应用程序

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

...
<!-- Do not inherit. -->
<location path="." inheritInChildApplications="false">
    <system.web>
        ...
。。。
...

这样做的目的是将您不希望继承到子应用程序的所有部分放在那些
位置
元素中,如我上面的示例所示。

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


关于如何做到这一点,请参阅类似的问题。

Web.config继承很不幸,您不能完全关闭它;具体来说,web.config中定义web.config中存在哪些配置节的顶部部分不能在子应用程序中被忽略/覆盖


将解决方案记录在案;基本上,您必须将顶部应用程序中当前的值向上移动到特定于机器/框架版本的配置文件中,然后将根web.config的所有(或至少大部分)包装到禁用继承性的位置标记中。

这似乎应该行得通。你能为该网站发布IIS中文件夹浏览列表的截图吗?你确定要回收你的应用程序池等吗?@Chevex:为什么会是“转换”?它应该是兼容的。把你的QA系统“转换”成4.0,运行你的自动化测试,看看会发生什么,怎么样?这个问题以前已经提过了;看看我对这个问题的回答:我想你误解了约翰,他们的应用程序一团糟。它不能被转换,他们没有自动测试。这是一个巨大的集合和东西的巢穴,必须留在3.5中。说真的,我们不能去那里。他们把这件事搞砸了。(在我到达这里之前)听起来他的问题是它引用了错误的web.config。进行这样的更改会破坏其父应用程序。这通常会产生“在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的节是错误的”错误。链接的页面提供了很大的帮助。非常感谢。今晚晚些时候,我会让你们知道事情的进展。这就成功了。谢谢你回答了我的问题。问得好,回答得好。我从来都不喜欢.NET配置文件的设计,但这个解决方案一劳永逸地证明了设计从一开始就是糟糕的。修改一个机器范围的配置文件,这样我就可以让一个单一的web应用程序父子对工作,这太糟糕了!