快速业务通道

ASP.NET 2.0数据教程之七十三:保护连接字符串及其它设置信息

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
gs e)
{
  // Get configuration information about Web.config
  Configuration config =
     WebConfigurationManager.OpenWebConfiguration (Request.ApplicationPath);

  // Let''s work with the <connectionStrings> section
  ConfigurationSection connectionStrings = config.GetSection ("connectionStrings");
  if (connectionStrings != null)
    // Only encrypt the section if it is not already protected
    if (! connectionStrings.SectionInformation.IsProtected)
    {
      // Encrypt the <connectionStrings> section using the
      // DataProtectionConfigurationProvider provider
      connectionStrings.SectionInformation.ProtectSection(
        "DataProtectionConfigurationProvider");
      config.Save();

      // Refresh the Web.config display
      DisplayWebConfig();
    }
}

protected void DecryptConnStrings_Click(object sender, EventArgs e)
{
  // Get configuration information about Web.config
  Configuration config =
     WebConfigurationManager.OpenWebConfiguration (Request.ApplicationPath);

  // Let''s work with the <connectionStrings> section
  ConfigurationSection connectionStrings =
    config.GetSection ("connectionStrings");
  if (connectionStrings != null)
    // Only decrypt the section if it is protected
    if (connectionStrings.SectionInformation.IsProtected)
     {
      // Decrypt the <connectionStrings> section
       connectionStrings.SectionInformation.UnprotectSection();
       config.Save();

      // Refresh the Web.config display
      DisplayWebConfig();
    }
}

这2个按钮的事件处理器的代码几乎是一样的.它们一开始都通过 WebConfigurationManager class类的OpenWebConfiguration方法获取当前应用程 序的Web.config文件的信息. 该方法根据指定的有效路径返回web配置文件。接下 来,再通过Configuration class类的GetSection(sectionName)方法访问 Web.config文件的<connectionStrings>节点.该方法返回一个 ConfigurationSection对象. 

该ConfigurationSection对象包含了一个 SectionInformation属性,用来阐述加密节点的其它相关信息. 就像上面的代码 显示的那样,我们通过查看SectionInformation的IsProtected属性来判断是否对 配置节点进行了加密.此外,还可以通过SectionInformation的ProtectSection (provider) 和 UnprotectSection方法对节点进行加密或解 密.

ProtectSection(provider)方法有一个字符串类型的输入参数,该参 数指定了用来加密的protected configuration provider的名称。在 EncryptConnString按钮的事件处理器里,我们将 “DataProtectionConfigurationProvider”传递给ProtectSection (provider)方法,因此指明了用到的是DPAPI provider.而UnprotectSection方法 可以确定加密时用到的provider,因此不需要任何的输入参数.

调用 ProtectSection(provider) 或 UnprotectSection方法后,我还必须调用 Configuration对象的Save method方法来进行具体的操作. 一旦完成加密或解密 并保存后,我们调用DisplayWebConfig方法将更新后的Web.config文件的内容上 传到TextBox控件.

键入上述代码后,在浏览器里测试 EncryptingCon

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号