是否可以在子文件夹中完全否定“更高”的web.config?

时间:2009-04-23 22:08:25

标签: asp.net web-config

是否可以完全否定子文件夹中的web.config?

显然,我在root中有一个web.config。

如果我有一个名为“MyApp”的子文件夹,我可以在那里编写一堆代码并让它在没有引用root的web.config的情况下运行吗?它将拥有自己的web.config,甚至不会在root中引用“更高”的web.config。

我正在寻找的是完整的App隔离。我希望能够在现有站点的子文件夹中编写一个应用程序,它忽略了它上面的整个web.config层次结构 - 应用程序就是一个岛屿本身。

我知道我可以使用“清晰”元素,但这是最好的方法吗?只需在每个顶级元素下面加上“清晰”?只是想知道是否还有另一种方式。

重复Will a child application inherit from its parent web.config?

5 个答案:

答案 0 :(得分:9)

在根目录中的web.config文件中,使用以下元素包装<system.web>元素:<location path="." inheritInChildApplications="false"></location>

请查看此链接以获取参考:

http://www.jaylee.org/post/2008/03/Prevent-ASPNET-webconfig-inheritance-and-inheritInChildApplications-attribute.aspx

答案 1 :(得分:1)

没有。通过设计共享托管和简单的缘故。

通过允许显式锁定/解锁配置,IIS7稍微改变了一点。

答案 2 :(得分:1)

是的,您必须清除想要覆盖的那些部分。考虑一下这一点,这是有道理的,因为清除所有内容的唯一方法可能会使得很难找到清除它的内容。 Clear通常会重置所有内容,包括web.configs中的root web.configs和服务器上frameworks / config文件夹中定义的machine.config。

请注意,您还将无法访问/ bin文件夹,/ app_code文件夹等。这可能是您想要的也可能不是。

您是否可以使用主机创建子应用程序也是另一个需要考虑的问题。

答案 3 :(得分:1)

听起来你应该创建一个完全是另一个应用程序根目录的虚拟目录。

答案 4 :(得分:0)

我刚刚在工作中遇到过这个问题,我的解决方案是创建一个新网站,而不是试图在现有网站下嵌套我的应用程序。我保持新应用程序(即www.mysite.com)的域映射相同,但更改了端口号/映射。

因此,我可以在www.mysite.com:88上使用我的新应用程序,而不必使用子域名。

这里需要注意的是,我的应用程序是一个Web服务,因此我必须在URL中指定端口号。它可能不是你的选择,但我想我会发布这个,它可以帮助我的情况。

<location path="." inheritInChildApplications="false"></location>解决方案对我来说不是一个选项,因为在ASP.Net Framework 4.0之前inheritInChildApplications似乎不存在?