Web.config:敏感设置

时间:2016-08-03 16:43:59

标签: c# asp.net asp.net-mvc

问题:

我想使用我的Facebook客户端秘密在本地运行我的ASP.NET MVC站点。我还想保持Facebook客户端的秘密不受源代码控制。我将所有这些发布到Azure,因此当我在云中运行我的Web服务器时没有问题。敏感设置直接进入App Service,源控制永远不会被看到。

原则上,将客户端秘密保持在源代码管理之外很容易。我可以在Web.config中为我的应用程序设置添加配置源:

<appSettings configSource="facebookClientSecret.config" />

我的所有设置都可以转到facebookClientSecret.config,这会被添加到.gitignore

存在问题:我的所有设置。我不想隐藏源代码控制中的所有设置:只有敏感的设置。

我试过这样做:

<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add configSource="facebookAppSecret.config" /> <add key="StorageConnectionString" value="UseDevelopmentStorage=true" /> </appSettings>

但显然这是“不允许的”。有没有办法让一个应用程序设置的子集来自一个单独的文件?

1 个答案:

答案 0 :(得分:2)

appSettings 上的file属性非常适合该法案。

 <appSettings file="facebookAppSecret.config">
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />    
    <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

将从facebookAppSecret.config文件以及<appSettings></appSettings>条目中提取设置。

值得注意的是,该文件的内容应仅包含<appSettings></appSettings>块(即包含<?xml version="1.0" encoding="utf-8" ?><configuration>...</configuration>

您需要调整文件的构建操作(应该是&#34;内容&#34;)和复制到输出目录项目设置(右键单击在Visual Studio中的文件 - &gt;属性),因此在您构建时该文件包含在输出目录中。