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


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

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

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

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

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

重复 子应用程序是否从其父web.config继承?


6097
2018-04-23 22:08


起源

这不是真的重复。 - Henk Holterman


答案:


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

请注意,您也将失去对/ bin文件夹,/ app_code文件夹等的访问权限。这可能是也可能不是您想要的。

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


1
2018-04-24 09:38



“将不知道父应用程序,也不知道它是web.config [...]” - 我不认为这是真的。您可以从父Web配置访问appSettings,模块仍然适用,等等。事实上,我必须从更高的web.configs中明确“删除”模块。 - Deane
嗯,好的一点,我刚刚测试过,你是对的。这对我来说是新闻,我会尽快更新我的回答。 - Zhaph - Ben Duguid
您对无法完全放弃更高级web.config的原因的解释是有道理的 - 例如,在machine.config级别有一些东西,并使Web服务器运行,因此您需要有选择地清除它们。 - Deane


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

查看此链接以获取参考:

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


9
2018-05-01 21:50



非常感谢这个提示,乔。它真的帮助了我! - Marcin Rybacki


不。通过设计共享主机和简单的缘故。

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


1
2018-04-24 04:50





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


1
2018-04-27 19:02





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

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

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

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


0
2017-12-25 08:19