2011-06-06 55 views
4

我们正在使用自定义配置节(通过NameValueConfigSection)来包含我们的设置。 这些设置是通过configSource从web.config中外部化的。在ASP.NET中使用aspnet_regiis加密自定义配置节

所以,在web.config中的条目是这个样子:

<configSections> 
    <section name="customSettings" type="System.Configuration.NameValueSectionHandler" /> 
    </configSections> 

    <customSettings configSource="config\customSettings.config" /> 

我们要加密我们的生产服务器上这个“customSettings.config”文件,所以运行此命令的建议,微软(这里:http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx

aspnet_regiis -pe customSettings -site 4 -app/

而这将产生以下输出:

Encrypting configuration section... 
Succeeded! 

但是,它没有成功可言,留给正是因为它是文件

(顺便说一下,这个命令确实工作如果加密非定制部分,如外在connectionStrings节)

我已经能够编写一个确实可以正常工作的小控制台应用程序,但是我们确实想使用标准工具来执行标准操作 - 任何人都可以告诉我这是一个限制还是哪里出错?

谢谢:)

+0

我有完全相同的问题。如果我将customSettings放在web.config中,它们会进行加密,但如果我使用configSource并将它们放在单独的文件中,则aspnet_regiis表示加密成功,但文件中的节点未加密。我也在同一个目录下的另一个文件中加密connectionStrings,它工作正常,所以我知道这不是一个路径问题。如果有人找到了答案,请让我知道。 – 2012-09-11 17:50:41

回答

3

我与this比较代码:

要加密connectionStrings部分与机器密钥存储(默认配置)的DPAPI供应商,从命令运行此命令提示:

aspnet_regiis -pe "connectionStrings" -app "/MachineDPAPI" -prov "DataProtectionConfigurationProvider" 

其中:

-pe指定配置部加密。

-app指定Web应用程序的虚拟路径。如果应用程序是嵌套的,请指定根目录中的嵌套路径,例如“/test/aspnet/MachineDPAPI

-prov指定提供程序名称。

我想知道您是否需要提供应用程序名称?和/或供应商?

它们的版本将引用中的属性值括起来。

+0

我正在提供应用程序名称“/”= root(在您的情况下,您的根目录中有一个已命名的应用程序)。不,不需要Prov,就像在文档中一样:“如果您没有使用-prov选项指定提供者,则使用配置为defaultProvider的提供者。” – Kram 2011-06-06 12:03:14

+0

并附上引号? – DOK 2011-06-06 12:08:29

+0

正式回答:) – Kram 2011-06-06 12:28:23

相关问题