动态配置并加密App.Config中数据库连接字符串
2008-02-23 07:43:47来源:互联网 阅读 ()
App.config中的数据库连接字符串,是在Settings.settings同步过来的。后者在设计时支持数据集DataSet的设计,但运行时不能更改,能够更改App.config的连接字符串,但无法加密、解密。造成的结果是数据库连接字符串,要么固定不变,要么以明文显示,极不安全。多次尝试后,成功的解决这些问题。
我的经验:
1. Settings.settings中的配置和App.config中的配置会相互更新,彼此同步。前者用于设计支持,后者用于运行时。能够手工阻止两者同步,使两者配置不相同,假如没有发布App.config,则全部采用Settings.settings的配置;否则在运行时App.config会覆盖Settings.settings的配置。
2. Settings.settings中的Application范围配置只在设计时更改,是只读的属性,User范围配置能够在运行时读写。参考MSDN文章“在 C# 中使用配置”中的说明:
应用程式作用域配置和用户作用域配置之间的重要区别是,用户作用域配置在运行时为读/写,并且可在代码中对其值进行更改和保存。应用程式作用域配置在运行时为只读。虽然能够读取,但是不能对其进行写入。具备应用程式作用域的配置只能在设计时或通过手动修改配置文档进行更改。
3. Settings中的只有“连接字符串”配置才能被数据集DataSet设计时支持,而“连接字符串”配置只能是Application范围配置,是只读的属性。
解决思路:
将Settings.settings的设计时代码文档Settings.Designer.cs内容复制到Setgings.cs中,删除Settings.Designer.cs,更改部分代码。连接字符串在Setgings.cs中缺省配置为明码,在App.config中为加密码。代码如下,DESEncrypt为静态加密函数,DESDecrypt为静态解密函数:
重写Settings代码
1using System.Xml; 2namespace A.Properties 3{ 4 5 [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 6 [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] 7 internal sealed class Settings : global::System.Configuration.ApplicationSettingsBase 8 { 标签: 版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 上一篇: 一条语句简单解决“每个Y的最新X”的SQL经典问题 下一篇: 2007年百度招聘在线笔试真题解答
相关文章
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设 网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源 网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash 热门词条
最新资讯
热门关注
热门标签
|