ASP.NET虚拟目录应用程序和网站';垃圾桶

ASP.NET虚拟目录应用程序和网站';垃圾桶,asp.net,iis,Asp.net,Iis,经过一番探索,我觉得我的情况已经大不相同了,我不得不问一个问题 <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> 我有一个供

经过一番探索,我觉得我的情况已经大不相同了,我不得不问一个问题

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
我有一个供公众使用的网站,还有一个在网站下方虚拟根目录中维护数据的网站。我希望它们都使用相同的/bin文件夹,但我无法使其正常工作。虚拟根目录具有不同的(更严格的)IP访问控制。IIS认为:

www.abc.com ->      C:\Website
    /Maintenance -> C:\Maintenance
<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
www.abc.com有一个C:\Website\bin和C:\Website\web.config

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
我希望/maintenance也使用C:\Website\bin。它们似乎“级联”了web.configs-C:\Website\web.config定义了一些东西,并引用了其bin文件夹中的程序集。当/Maintenance启动时,我会收到无法解析C:\Website\web.config中引用的程序集的错误。C:\Maintenance\web.config也会得到处理

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
IIS6,ASP.NET 3.5,Win2k3

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

这可行吗?

您可以从C:\Maintenance\web.config取消注册DLL文件。我在DotNetNuke根网站下创建sun virtral目录时经常这样做。例如,如果您正在C:\website\web.config中引用HTTP模块:

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

您可以从C:\Maintenance\web.config中删除引用:

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
<httpModules>
      <remove name="ScriptModule"/>
</httpModules>


您必须在您的虚拟目录/应用程序中创建一个单独的bin。

我不清楚您的问题的目的是什么,但是如果您希望处理bin目录之外的其他目录,以供维护站点的程序集引用,您可以使用web.config运行时配置的元素

<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>

它允许您指定其他路径来解析引用,而不仅仅是“bin”。因为这非常相似,我将把它链接起来,这样您就可以在这里回顾示例和答案。希望它能对您有所帮助。

我最终做的是在C:\网站下移动/维护,并完全删除虚拟目录。这允许他们共享同一个/bin,我最终得到的是同一个URL。

所以www.abc.com/Maintenance是一个指向C:\Website的虚拟文件夹?@Phil:No,/Maintenance指向C:\Maintenance是的,你可以。但例如,我在c:\website\web.config中有一个HTTP处理程序,它位于c:\website\bin中的DLL中。当/Maintance启动时,我从它对c:\website\web.config的处理中得到一个错误,无法找到处理程序所在的组件。然后删除所有HTTP处理程序:发布你的c:\website\web.config,我将向你展示如何清理它。这是我已经做了一段时间的工作,但这意味着我必须保留website/bin中DLL的副本,这样website/web.config在/maintenance被激活时处理就可以了。请告诉我,除了GAC,你是否找到了更好的方法,因为这是一个麻烦。@womp:谢谢你的链接。我的意图很简单——我希望通过受限URL为公共网站和数据维护使用相同的代码库。虚拟目录允许我限制IP范围以接受来自的请求。因此,在网站下设置一个具有这些限制的虚拟根似乎是一种合乎逻辑的方式。现在分享代码库。。。
<httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>