浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

目录

问题解答集目录    1

目录    2

修订历史纪录    3

1 什么是Base64编码规则?    4

1.1 编码规则    4

1.2 解码规则    4

1.3 dot Net下采用Base64编码的一个封装好的类库    5

2 怎样抛出异常?    5

3 怎样在Web.config中存储自定义的数据,以及怎样使用C#语言读取这些数据?    5

3.1 在Web.config中存储信息    5

3.2 使用C#语言读取这些数据    6

4 如何使用Cookie?    6

4.1 创建和读取会话cookie    6

4.2 创建和读取持久性cookie    6

5 Machine.config、Web.config、子Web.config的覆盖关系是怎样的?    7

6 怎样获得主机IP地址?    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

);

posted on 2007-11-29 19:07  lexus  阅读(240)  评论(0编辑  收藏  举报