【问题标题】:Web.config: sensitive settingsWeb.config:敏感设置
【发布时间】:2016-08-04 01:22:29
【问题描述】:

问题:

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

原则上,将客户端机密排除在源代码控制之外很容易。我可以在 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>

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

【问题讨论】:

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


    【解决方案1】:

    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 文件以及 &lt;appSettings&gt;&lt;/appSettings&gt; 条目中提取设置。

    值得注意的是,该文件的内容应该只包含一个&lt;appSettings&gt;&lt;/appSettings&gt; 块(即它应该包含&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;configuration&gt;...&lt;/configuration&gt;

    您需要调整文件的 Build Action(应为“Content”)和 Copy To Output Directory 项目设置(在 Visual Studio 中右键单击文件-> 属性),以便在构建时文件包含在输出目录中。

    【讨论】:

    • 让我试一试。如果可行,我会将其标记为答案 - 谢谢。
    • 完美运行。唯一要补充的是,必须用“始终复制”或“如果较新则复制”来标记外部文件。我第一次尝试这个时就被绊倒了。
    • 好点 - 您至少需要 F5 调试才能正确运行。我会在这方面更新更多细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2018-10-20
    • 2019-01-12
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 2016-12-15
    相关资源
    最近更新 更多