问题:
我想使用我的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>
但显然这是“不允许的”。有没有办法让一个应用程序设置的子集来自一个单独的文件?
答案 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;属性),因此在您构建时该文件包含在输出目录中。