【问题标题】:Encrypting connectionStrings in a web.config file在 web.config 文件中加密连接字符串
【发布时间】:2011-06-21 10:26:46
【问题描述】:

我想要加密的 web.config 文件中的任何部分我都运行这个命令行工具: aspnet_regiis -pe "anySection" -app "/SampleApplication"

在我尝试加密我的 connectionStrings 部分之前,一切正常

我这样定义(并且我无法更改)我的 connectionStrings 部分:

<connectionStrings>
    <add key="myKey" value="myValue"/>      
</connectionStrings>

但是定义它的“标准”方式是这样的:

  <connectionStrings>
    <add name="myName" connectionString="...." providerName="..." />
  </connectionStrings>

我如何跑步:

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" 

“...无法识别的属性'key'....”出错。如果我将连接字符串部分更改为标准方式,它可以正常工作。但我不能使用这种格式。

有没有办法使用 aspnet_regiis 工具来做到这一点?用代码做这件事对我来说不是一个选择。

还有没有办法在不指定应用程序 (-app "/SampleApplication") 而是提供 web.config 文件的路径的情况下运行此功能?

感谢一百万

【问题讨论】:

  • 如果你以非标准的方式做事,你不能指望自动化工具工作。
  • 我要问一个显而易见的问题,除了它是一个遗留系统之外,你为什么还要使用非标准方法来执行 connectionString?

标签: c# .net asp.net encryption


【解决方案1】:

当我没有以管理员身份运行命令行时,我遇到了类似的错误。

【讨论】:

    【解决方案2】:

    您似乎复制并粘贴了appSetting

    &lt;add key="myKey" value="myValue"/&gt; 无效,因为 keyvalue 不是 connectionString 元素所期望的属性。

    你必须使用“标准”

    &lt;add name="myName" connectionString="...." /&gt;


    connectionStrings Element (ASP.NET Settings Schema)

    【讨论】:

    • 嗨猎人。我没有复制和粘贴 appSetting,我复制并粘贴了一个名为“connectionStrings”的部分(我可以称它为 testSection 或其他任何东西),它有一个键值对(就像应用程序设置一样)。这是一个遗留系统,我需要做的是在具有键值对的部分上使用该实用程序。这不可能吗?为什么不呢,我看不出问题所在?
    • aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" 正在寻找 nameconnectionString。它不知道如何处理keyvalue。在 connectionStrings 元素中使用 keyvalue 是无效的,如架构所定义。
    • 非常感谢。您不应该知道我是否可以提供 web.config 文件的路径而不是提供应用程序名称吗?
    【解决方案3】:

    connectionStrings 元素内的 add 元素具有明确定义的架构(请参阅http://msdn.microsoft.com/en-us/library/htw9h4z3.aspx),它与 appSettings 元素内的 add 元素不同。

    如果你想加密 appSettings 部分,这将是 整个 appSettings 部分,你可以这样做:

    aspnet_regiis -pe "appSettings" -app "/SampleApplication" -prov "RsaProtectedConfigurationProvider"
    

    【讨论】:

    • 非常感谢。你不应该知道我是否可以提供 web.config 文件的路径而不是提供应用程序名称吗?
    • 我自己没试过,但理论上是可以的。使用 -pef 参数而不是 -pe 和 -app 参数。例如,如果您的 web.config 文件位于物理目录 C:\Sites\MySite,则:aspnet_regiis -pef "appSettings" "C:\Sites\MySite" -prov "RsaProtectedConfigurationProvider"
    猜你喜欢
    • 2010-12-14
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多