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





0/5 (0投票)
如何将 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 日
希望这有帮助!