原文:http://my.donews.com/buffalo319/2007/06/29/%E5%9C%A8aspnet20%E4%B8%AD%E4%BF%9D%E5%AD%98%E6%95%B0%E6%8D%AE%E5%BA%93%E9%93%BE%E6%8E%A5%E5%AD%97%E7%AC%A6%E4%B8%B2/

我们经常在web.config文件中存储数据库链接字符串,可以方便以后数据库的更改和迁移。

在ASP.Net1.1中

<configuration>
<appSettings>
<add key="myconnection" value="server=myserversql2005;
                      initial catalog=AdventureWorks;user id=test;pwd=test"/>
</appSettings>
...
</configuration>

 其中字符串的写法可以有:

  • server=Hostname\InstanceName;initial catalog=DatabaseName;uid=test;pwd=test;
  • server=Hostname\InstanceName;database=DatabaseName;uid=test;pwd=test;
  • Data Source=Hostname\InstanceName;initial catalog=DatabaseName;uid=test;pwd=test;
  •  server=Hostname\InstanceName;initial catalog=DatabaseName;Integrated Security=True;等等
  1. server等同于Data Source;
  2.  initial catalog等同于database;
  3.  uid等同于user id ;
  4. pwd等同于password;
  5.  如果是本机身份验证可以写Integrated Security=True;
  6. 字符串不区分大小写

读取字符串的用法:

string constr = ConfigurationSettings.AppSettings[”myconnection”];
 

在ASP.NET 2.0中:


Microsoft 把数据库链接字符转专门提取出来放在connectionStrings节点里,当然原来的appsettings节点还是可以按照原来的方法使用的。

<configuration>
<appSettings/>
<connectionStrings>
<add name="myconnection"
connectionString="server=myserversql2005;initial
catalog=AdventureWorks;
user id=test;pwd=test;"/>
</connectionStrings>
</configuration>

使用的时候新的对象System.Configuration.ConfigurationManager代替原来的System.Configuration.AppSettings对象:

string constr = System.Configuration.ConfigurationManager.ConnectionStrings[”myconnection”].ConnectionString;

如果要读取appsettings节点里的字符串使用:

string constr = System.Configuration.ConfigurationManager.AppSettings[”myconnection”];

加密字符串:

由于数据库密码是在web.config文件中以明文的形式显示的,为了安全起见我们可以采用以下的方法进行加密。

  1. 在命令行界面下进入到.NET 2.0 framework 目录,如下:
    C:WINDOWSMicrosoft.NETFrameworkv2.0.50727
  2. 运行以下命令:
    aspnet_regiis.exe -pe "connectionStrings" -app "/connectionTest"
其中: connectionStrings是要加密的节点的名称,connectionTest是要加密的虚拟目录。
控制台会提示加密成功,打开web.config文件就可以看到加密后的内容。
解密使用命令的参数把pe改为pd即可。