65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.net 2.0 网站作为 1.1 网站的子应用程序

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2008年10月4日

CPOL

2分钟阅读

viewsIcon

20507

如何将 asp.net 2.0 配置为 asp.net 1.1 应用程序的子应用程序

引言

以下是如何将 asp.net 2.0 Web 应用程序配置为现有 asp.net 1.1 应用程序的子应用程序

按照设计,根网站会将配置文件“向下继承”到所有子应用程序。

当子应用程序加载时,运行时从根应用程序加载配置文件并向下继承到所有子应用程序。 这可能很有用,子应用程序现在可以从根应用程序的配置继承。 但是,当 web.config 文件添加以下内容时,这种实用性有时会给我们带来问题
 程序集
 httpModules
 httHeaders

当您访问 2.0 子站点时,运行时会尝试通过在 2.0 bin 目录中查找来加载根 web.config 中引用的模块、程序集和标头。 运行时将无法在 bin 目录中找到这些内容,并会抛出异常。

现在有几种方法可以解决这个问题。
1. 将 dll 复制到子应用程序的 bin 文件夹
2. 配置子应用程序以删除引用的 dll。

操作方法...

首先,我只在 IIS 6 上对此进行了测试。

假设您的 1.1 Web 应用程序已配置并正常工作,并且您已在 IIS 6.0 中创建并配置了您的 2.0 应用程序作为子应用程序。首先要确保的是您的 2.0 应用程序使用自己的应用程序池。凭据可以与您的 1.1 应用程序匹配,但拥有自己的应用程序池很重要。

现在让我们假设您的根 (1.1) 应用程序在 web.config 文件中具有以下部分

       

<httpmodules />
 <add name="Module1" type="MySuperApp.Modules, MySuperApp.Modules.Module1" />
</httpmodules />
<compilation batch="true" debug="true" defaultlanguage="vb" batchtimeout="30" />
 <assemblies />
  <add assembly="MySuperApp.Specialized.Utilis" />
  <add assembly="MySuperApp.SomeOtherStuff" />
 </assemblies />
</compilation />
<httphandlers />
 <add type="MySuperApp.Handlers.BobHandler, MySuperApp.Bob" validate="false" path=".bob" verb="GET" /> 
</httphandlers />


上面的引用告诉运行时加载所需的 dll。
我们知道,web.config 被“向下继承”到子应用程序。
因此,在子应用程序的配置文件中,我们删除引用。
2.0 应用程序的 web.config 文件应包含以下内容...

<compilation debug="true">
<assemblies>
<remove assembly="MySuperApp.Specialized.Utilis" />
<remove assembly="MySuperApp.SomeOtherStuff" />
</assemblies>
</compilation>
<httpModules>
<clear/>
<add name="Session" type="System.Web.SessionState.SessionStateModule"/> 
</httpModules>
<httpHandlers>
<remove verb="GET" path=".bob" />
</httpHandlers>

这些都在 system.web 节点内。
请特别注意 httpModules 部分。 我已发出 Clear 命令,而不是显式的
删除。 这样做是为了可以将子应用程序扩展到
一个完整的根(独立)网站,而无需修改配置文件。

关注点

这似乎适用于我的特定情况,但是其他人声称它不起作用,并且作为最后的手段,必须将 dll 包含在 bin 文件夹中。 如果有其他解决方案,我将不胜感激。

历史

创建时间:2008 年 10 月 5 日

希望这有帮助!

www.fuzzelogicSolutions.com

© . All rights reserved.