我在我的网站的根目录中有一个内容管理应用程序,我正在尝试在子文件夹下使用不同的应用程序(计费应用程序).不幸的是,根网站的web.config干扰了子应用程序.
有没有办法只禁用子文件夹的web.config继承?
更新:
由Stephen Burris链接,使用<location>标记可以阻止部分Web配置的继承,如下所示:
<?xml version="1.0"?>
<configuration>
<configSections>
....
</configSections>
<location path="." inheritInChildApplications="false">
<appSettings>
....
</appSettings>
<connectionStrings/>
<system.web>
....
</system.web>
<system.codedom>
....
</system.codedom>
<system.webServer>
....
</system.webServer>
</location>
<runtime>
....
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在<configSections>与<runtime>部分将不接受被封装在标签...所以我想这不仅会大部分的工作.谁知道怎么做得更好?
SBu*_*ris 21
您可以在根web.config文件中使用一个属性,以使其内容不会被子应用程序继承.
inheritInChildApplications
有关inheritInChildApplications的博客
将不用于继承的配置部分放在里面
<location inheritInChildApplications="false">
<NotInheritedConfigPart/>
</location>
Run Code Online (Sandbox Code Playgroud)
配置部分似乎不可能不继承,但配置的其他部分可以像这样"注释"并且不会继承.
Mat*_*tta 17
如果您可以使用2个单独的应用程序池,则可以使用enableConfigurationOverride="false"applicationHost.config文件中的attibute完全停止继承,如我在此问题中所述:"条目已添加" - 两个单独的应用程序池
<add name="MyAppPool" enableConfigurationOverride="false" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" >
<processModel identityType="NetworkService" />
</add>
Run Code Online (Sandbox Code Playgroud)
在我看来,每次我都在努力解决这个问题,答案最终都是有效的 - 我将离开这里,为了我未来的自我,所以他不会再浪费时间了.
当你只是想在现有网站中添加一些虚拟目录时,我发现这是一个很大的问题.使用复杂的web.config文件,我总是最终放弃并将其移动到另一个应用程序.
我会明确定义所需的所有设置-永远不要假设任何设置仍设置为默认值。
例如,如果要定义connectionString <clear />,请在<add name=... />,等之前包含一个标记。对于“成员资格”,请定义所有属性,包括cookie名称。等等。
它可能会使文件变大,但绝对可以帮助您避免出现“但它在我的盒子上也起作用”的情况:-)
| 归档时间: |
|
| 查看次数: |
34020 次 |
| 最近记录: |