目录
1.3 dot Net下采用Base64编码的一个封装好的类库 5
3 怎样在Web.config中存储自定义的数据,以及怎样使用C#语言读取这些数据? 5
5 Machine.config、Web.config、子Web.config的覆盖关系是怎样的? 7
1 什么是Base64编码规则?
1.1 编码规则
Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在结尾添加1到2个"="。
例:将对ABC进行BASE64编码
首先取ABC对应的ASCII码值。A(65)B(66)C(67)。
再取二进制值A(01000001)B(01000010)C(01000011),然后把这三个字节的二进制码接起来(010000010100001001000011),再以6位为单位分成4个数据块并在最高位填充两个0后形成4个字节的编码后的值(00010000)(00010100)(00001001)(00000011)。蓝色部分为真实数据。再把这四个字节数据转化成10进制数得(16)(20)(19)(3)。最后根据BASE64给出的64个基本字符表,查出对应的ASCII码字符(Q)(U)(J)(D)。这里的值实际就是数据在字符表中的索引。
注BASE64字符表:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
1.2 解码规则
解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。
1.3 dot Net下采用Base64编码的一个封装好的类库
Convert.ToBase64String 方法 [C#]
将 8 位无符号整数数组的值转换为它的等效 String 表示形式(由以 64 为基的数字组成)。
[Visual Basic] Overloads Public Shared Function ToBase64String(Byte()) As String
[C#] public static string ToBase64String(byte[]);
[C++] public: static String* ToBase64String(unsigned char __gc[]);
[JScript] public static function ToBase64String(Byte[]) : String;
将 8 位无符号整数数组子集的值转换为其等效的 String 表示形式(由以 64 为基的数字组成)。参数将子集指定为输入数组中的偏移量和数组中要转换的元素数。
受 .NET Framework 精简版的支持。
[Visual Basic] Overloads Public Shared Function ToBase64String(Byte(), Integer, Integer) As String
[C#] public static string ToBase64String(byte[], int, int);
Convert.FromBase64String 方法 [C#] [C++] public: static String* ToBase64String(unsigned char __gc[], int, int);
[JScript] public static function ToBase64String(Byte[], int, int) : String;
将指定的由以 64 为基的数字组成的值的 String 表示形式转换为等效的 8 位无符号整数数组。
public static byte[] FromBase64String(string s);
2 怎样抛出异常?
在一个方法Display()中,有"throw new Exception();"语句,在其它方法执行Display()方法时,当执行到"throw new Exception();"语句时,此语句会抛出一个异常,这时用try…catch…语句,就会捕捉到这个异常。
3 怎样在Web.config中存储自定义的数据,以及怎样使用C#语言读取这些数据?
3.1 在Web.config中存储信息
假如想存储名称为MySession的值为"ABC"的信息。打开Web.config文件,填写如下信息(如果文件里已经有configuration、appSettings节点,则直接写<add …/>信息即可):
<configuration>
<appSettings>
<add key="MySession" value="ABC" />
</appSettings>
</configuration>
3.2 使用C#语言读取这些数据
使用如下语句:
string conString1=System.Configuration.ConfigurationSettings.AppSettings["MySession"];
则conString1中存储的就是字符串"ABC"。
4 如何使用Cookie?
4.1 创建和读取会话cookie
可以使用Response对象和Request类的Cookies属性来创建和读取会话cookie。Cookies属性代表cookie的集合(HttpCookieCollection类的实例)。
示例8.1.1:创建一个名为myCookie的新会话cookie:
HttpCookie coo=new HttpCookie("myCookie","Hello!");
Response.Cookies.Add(coo);
上面的语句创建一个会话cookie,这个cookie被添加到浏览器的内存中,但是不被记录到文件中。当用户关闭浏览器时,cookie从浏览器中消失。
示例8.1.2:读取现有的cookie
Request.Cookies("myCookie");
注意:cookie只能包含字符串值。
4.2 创建和读取持久性cookie
持久性cookie类似去会话cookie,区别在于持久性cookie具有确定的过期日期。当浏览器请求一个创建持久性cookie的页面时,浏览器将cookie保存到硬盘。持久性cookie可以在用户的计算机上保留数月、甚至数年。
示例8.2.1:创建持久性cookie
HttpCookie coo=new HttpCookie("myCookie","Hello!");
coo.Expires=#12/23/2005#
Response.Cookies.Add(coo);
会话cookie和持久cookie之间唯一区别是增加了过期信息。
示例8.2.2:读取持久性cookie
Request.Cookies("myCookie");
会话cookie和持久cookie的读取方法一样。
5 Machine.config、Web.config、子Web.config的覆盖关系是怎样的?
web.config会覆盖Machine.config,子Web.config文件会覆盖它们的父Web.Config文件指定的配置设置。这意味着,在层次结构中较低位置上创建Web.Config文件时,不需要复制父Web.Config文件的全部内容。可以只指定你需要修改的配置设置。
Web.Config文件并不悄悄地使用计算机注册表或元数据库保存配置信息。ASP.NET框架直接从Web.Config文件读取所有配置信息。这意味着如果你需要将一个ASP.NET应用程序移动到新的服务器,那么只需要将所有文件(包括Web.Config文件)复制到新服务器上,所有配置设置就跟着转移了。
6 怎样获得主机IP地址?
using System.Net;
string hostname=Dns.GetHostName();
IPHostEntry hostEntry=Dns.GetHostByName(hostname);
string ipAddress=hostEntry.AddressList[0].ToString()
ipAddress存储的就是本机的IP地址。
public static byte[] FromBase64String( string s
);