web.config 之外的应用程序设置

web.config 之外的应用程序设置

我需要将生产应用程序设置部分保留在 Web.config 之外;我不希望密钥和其他机密信息保留在源代码存储库中。但是,如果我使用 IIS Mananger 编辑应用程序设置,它会更改 Web.config,该设置将在下次部署时被覆盖。

我如何才能将这些设置保留在部署时随应用程序附带的 Web.config 之外?例如,这可以通过 Azure 网站以某种方式完成 - 您在门户中配置的应用程序设置不存储在 Web.config 中 - 可以通过 FTP 下载文件来确认。它是如何做到的?

答案1

对于 web.config 中的 appSettings 和 connectionStrings 节点,您可以将它们移动到 web.config 之外的单独文件中。

在您的 web.config 中您将拥有:

<appSettings configSource="appsettings.config"></appSettings>

然后新建一个文件appsettings.config:

 <?xml version="1.0"?>
 <appSettings>
     <add key="foo" value="bar" /> 
 </appSettings>

然后,您必须确保不要部署这些新文件,并使它们在生产服务器和开发环境中保持不同。

我的所有 web.config 文件都排除在我的部署过程之外,如果我需要更改它们,我会在阶段或生产站点上进行更改。

答案2

除了站点中的 web.config 文件之外,还有几个 IIS 全局设置。

%systemroot%\System32\inetsrv\config\applicationHost.config

具有所有全局 IIS 设置,根据您的Feature Delegation设置,这些设置可能会在本地 web.config 中被覆盖。但您可以通过在服务器级别的功能委派中将功能设置为“只读”来防止这种情况。

对于 dot.NET 相关的设置,有两个全局文件:

%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\machine.config
%systemroot%\Microsoft.NET\Framework??\v?.?.????\CONFIG\web.config

这些文件有多个版本,每个操作系统平台的每个框架版本对应一个版本。

这些文件中所做的任何设置都将由您的本地 web.config 继承。

但是我认为没有办法阻止本地 web.config 覆盖全局文件中的设置。

相关内容