<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_安安的BLOG</title><subtitle type="text">安安目前专注电子商务解决方案^_^</subtitle><id>http://feed.cnblogs.com/blog/u/14625/rss</id><updated>2012-03-26T10:08:38Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/14625/rss"/><entry><id>http://www.cnblogs.com/anan/archive/2012/03/26/2418324.html</id><title type="text">GUID 字符串，16位字符串，19位数字</title><summary type="text">在C#中生成唯一的字符串和数字 当我们想要获得一个唯一的key的时候，通常会想到GUID。这个key非常的长，虽然我们在很多情况下这并不是个问题。但是当我们需要将这个36个字符的字符串放在URL中时，会使的URL非常的丑陋。 想要缩短GUID的长度而不牺牲它的唯一性是不可能的，但是如果我们能够接受一个16位的字符串的话是可以做出这个牺牲的。 我们可以将一个标准的GUID 21726045-e8f7-4b09-abd8-4bcc926e9e28 转换成短的字符串 3c4ebc5f5f2c4edc 下面的方法会生成一个短的字符串，并且这个字符串是唯一的。重复1亿次都不会出现重复的，它也是依照G..</summary><published>2012-03-26T10:03:00Z</published><updated>2012-03-26T10:03:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2012/03/26/2418324.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2012/03/26/2418324.html"/><content type="html">&lt;h1 class="postTitle"&gt;&lt;a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/lcwzj/archive/2009/04/16/1436992.html"&gt;&lt;font color="#399ab2"&gt;在C#中生成唯一的字符串和数字&lt;/font&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="postBody"&gt;&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当我们想要获得一个唯一的key的时候，通常会想到GUID。这个key非常的长，虽然我们在很多情况下这并不是个问题。但是当我们需要将这个36个字符的字符串放在URL中时，会使的URL非常的丑陋。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 想要缩短GUID的长度而不牺牲它的唯一性是不可能的，但是如果我们能够接受一个16位的字符串的话是可以做出这个牺牲的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们可以将一个标准的GUID &lt;em&gt;21726045-e8f7-4b09-abd8-4bcc926e9e28&lt;/em&gt;&amp;nbsp; 转换成短的字符串 &lt;em&gt;3c4ebc5f5f2c4edc&lt;/em&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下面的方法会生成一个短的字符串，并且这个字符串是唯一的。重复1亿次都不会出现重复的，它也是依照GUID的唯一性来生成这个字符串的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string GenerateStringID()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long i = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (byte b in Guid.NewGuid().ToByteArray())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i *= ((int)b + 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return string.Format("{0:x}", i - DateTime.Now.Ticks);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果你想生成一个数字序列而不是字符串，你将会获得一个19位长的序列。下面的方法会把GUID转换为Int64的数字序列。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private long GenerateIntID()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buffer = Guid.NewGuid().ToByteArray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return BitConverter.ToInt64(buffer, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p _extended="true"&gt;1）假设&lt;a href="http://wenwen.soso.com/z/Search.e?sp=S%E6%95%B0%E6%8D%AE%E5%BA%93&amp;amp;ch=w.search.yjjlink&amp;amp;cid=w.search.yjjlink" target="_blank"&gt;数据库&lt;/a&gt;是这个样子的：&lt;/p&gt;&lt;p _extended="true"&gt;&lt;/p&gt;&lt;p _extended="true"&gt;&amp;nbsp;&lt;/p&gt;&lt;p _extended="true"&gt;2）运行以下控制台代码：&lt;/p&gt;&lt;p&gt;static void Main(string[] args)&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //测试bigint的读取：&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlConnection con = new SqlConnection(@"server=.\sqlexpress;database=MyTest;integrated security=true"))&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlCommand cmd = new SqlCommand("select top 1 number from tb_dbo", con);&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; con.Open();&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleRow);&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dr.Read();&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong _extended="true"&gt;long n = Convert.ToInt64(dr["number"]);&lt;br _extended="true" /&gt;&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(n);&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dr.Close();&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br _extended="true" /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;p _extended="true"&gt;&amp;nbsp;&lt;/p&gt;&lt;p _extended="true"&gt;3）结果如下：&lt;/p&gt;&lt;p _extended="true"&gt;&amp;nbsp;&lt;/p&gt;&lt;p _extended="true"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a id="cb_post_title_url" href="http://www.cnblogs.com/iamsunrise/archive/2011/07/14/2106473.html"&gt;是否可以无损耗的压缩GUID为12位呢？&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;&lt;div class="postbody"&gt;&lt;div id="cnblogs_post_body"&gt;&lt;div&gt;&lt;div&gt;当我们想要获得一个唯一的key的时候，通常会想到GUID。这个key的长度是36位，如果将这个36为的字符串存储或是用url传递的时候就会感觉非常的难看。&lt;/div&gt;&lt;div&gt;就算去掉-分隔符也有32位，如 EAA82B2DA9EA4E5B95330BAF9944FB35，如果转为数字序列 如将guid转为int64数字序列，长度也会有19位。&lt;/div&gt;&lt;div&gt;如&lt;/div&gt;&lt;div&gt;byte[] buffer = Guid.NewGuid().ToByteArray(); &amp;nbsp;&lt;/div&gt;&lt;div&gt;long long_guid=BitConverter.ToInt64(buffer, 0);&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;这样就会得到一个类似于 &amp;nbsp;5472976187161141196 的19位长度的 数字序列。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;如果我们将 5472976187161141196 分解为 54 72 97 61 87 161 141 196，应该可以用8个字符就可以显示，但会有一部分是不可显示的字符。&lt;/div&gt;&lt;div&gt;如果将这8个字符转为base64，发现只需要10-14个为就能显示完毕，将一些url用到的某些符号剔除，通常会产生12位的编码较多，10位的编码较少。&lt;/div&gt;&lt;div&gt;经过100万次的测试，没有发现会有重复的字符产生，不知道是否是完美的将guid 压缩为12位的方法呢？&lt;/div&gt;&lt;div&gt;如果你有更好的做法，可以共享出来。&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;附源代码&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UUID()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;buffer&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Guid.NewGuid().ToByteArray();&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;long&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;long_guid&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;BitConverter.ToInt64(buffer,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_Value&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Math.Abs(long_guid).ToString();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;buf&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[_Value.Length];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;p&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;_Value.Length;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ph&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;System.Convert.ToByte(_Value[i]);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;fix&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;((i&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;_Value.Length)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;pl&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;System.Convert.ToByte(_Value[i&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[p]&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;)((ph&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;pl);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fix&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[p]&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;)(ph);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;((i&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;_Value.Length)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(System.Convert.ToInt16(_Value.Substring(i,&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;))&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080"&gt;256&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[p]&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;System.Convert.ToByte(_Value.Substring(i,&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fix&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;i&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;fix;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[]&amp;nbsp;buf2&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;&lt;span style="color: #000000"&gt;[p];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;i&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;i&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;p;i&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf2[i]&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;buf[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;System.Convert.ToBase64String(buf2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;cRtn.ToLower();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;cRtn.Replace(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;cRtn.Replace(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;+&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cRtn&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;cRtn.Replace(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;=&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(cRtn.Length&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #800080"&gt;12&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;cRtn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UUID();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 19px; font-family: 'Courier New'; font-size: 13px" class="Apple-style-span"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p _extended="true"&gt;&amp;nbsp;&lt;/p&gt;&lt;p _extended="true"&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2418324.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2012/03/26/2418324.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2012/03/18/2405141.html</id><title type="text">黑苹果修改分辨率</title><summary type="text">参考http://www.congci/ .com/item/mac,os,fenbianlv去掉上面的空格再访问系统盘 Extra / com.apple.Boot.plist文件 右键 “显示简介” -- &gt;“共享与权限”添加当前用户读写权限在&lt;key&gt;Timeout&lt;/key&gt; &lt;string&gt;10&lt;/string&gt; 的下面添加如下两行： &lt;key&gt;Graphics Mode&lt;/key&gt; &lt;string&gt;1280*800*32@60&lt;/string&gt; 然后保存，退出， 笔记本是14.1寸</summary><published>2012-03-18T13:55:00Z</published><updated>2012-03-18T13:55:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2012/03/18/2405141.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2012/03/18/2405141.html"/><content type="html">&lt;p&gt;参考&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.congci/"&gt;http://www.congci/&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .com/item/mac,os,fenbianlv&lt;/p&gt;&lt;p&gt;去掉上面的空格再访问&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;系统盘 Extra / com.apple.Boot.plist&amp;nbsp;文件 右键 &amp;#8220;显示简介&amp;#8221; -- &amp;gt;&amp;#8220;共享与权限&amp;#8221;&lt;/p&gt;&lt;p&gt;添加当前用户读写权限&lt;/p&gt;&lt;p&gt;在&lt;br /&gt;&amp;lt;key&amp;gt;Timeout&amp;lt;/key&amp;gt; &lt;br /&gt;&amp;lt;string&amp;gt;10&amp;lt;/string&amp;gt; &lt;br /&gt;的下面添加如下两行： &lt;br /&gt;&amp;lt;key&amp;gt;Graphics Mode&amp;lt;/key&amp;gt; &lt;br /&gt;&amp;lt;string&amp;gt;1280*800*32@60&amp;lt;/string&amp;gt; &lt;br /&gt;然后保存，退出， &lt;br /&gt;笔记本是14.1寸的液晶，所以分辨率是1280*800,色深32位，刷新率为60，可以根据需要更改为相应的值。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;参照方法&lt;/p&gt;&lt;p&gt;由于是黑苹果，使用的变色龙启动器，直接修改启动器下的boot文件即可，所以跟下面的方法相同，但是文件不同。&lt;/p&gt;&lt;p&gt;第一种方法：终端修改： &lt;br /&gt;1、打开终端，输入 sudo -s，取得root权限； &lt;br /&gt;2、输入 vi /Library/Preferences/SystemConfiguration/com.apple.Boot.plist，打开该文件； &lt;br /&gt;3、在&amp;lt;key&amp;gt;Timeout&amp;lt;/key&amp;gt; &lt;br /&gt;&amp;lt;string&amp;gt;10&amp;lt;/string&amp;gt; &lt;br /&gt;的下面添加如下两行： &lt;br /&gt;&amp;lt;key&amp;gt;Graphics Mode&amp;lt;/key&amp;gt; &lt;br /&gt;&amp;lt;string&amp;gt;1680*1050*32@60&amp;lt;/string&amp;gt; &lt;br /&gt;然后保存，退出， &lt;br /&gt;我是22寸的液晶，所以刷新率为60，你可以更改为需要的值。 &lt;br /&gt;4、重起。 &lt;/p&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2405141.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2012/03/18/2405141.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2012/02/19/2358525.html</id><title type="text">IIS 7.5 Express配置文件解析</title><summary type="text">默认使用的配置文件是在:[我的文档]/IISExpress\config\applicationhost.config 是核心的配置文件，它用于承载站点的定义、应用程序和应用程序池以及整个WEB服务器的配置。由于是放在我的文档中的，所以修改它不需要管理员权限，意味着可以直接修改。在修改后，下次启动应用程序就会起效。在applicationhost.config内容中，&lt;system.applicationHost&gt; 用于定义网站和应用程序池。默认情况下，其内容如下：&lt;applicationPools&gt; &lt;add name="Clr4IntegratedA</summary><published>2012-02-19T12:46:00Z</published><updated>2012-02-19T12:46:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2012/02/19/2358525.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2012/02/19/2358525.html"/><content type="html"> &lt;p&gt;默认使用的配置文件是在:&lt;br /&gt;[我的文档]/IISExpress\config\&lt;/p&gt;&lt;p&gt;applicationhost.config 是核心的配置文件，它用于承载站点的定义、应用程序和应用程序池以及整个WEB服务器的配置。&lt;br /&gt;由于是放在我的文档中的，所以修改它不需要管理员权限，意味着可以直接修改。&lt;br /&gt;在修改后，下次启动应用程序就会起效。&lt;/p&gt;&lt;p&gt;在applicationhost.config内容中，&amp;lt;system.applicationHost&amp;gt; 用于定义网站和应用程序池。&lt;br /&gt;默认情况下，其内容如下：&lt;br /&gt;&amp;lt;applicationPools&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;applicationPoolDefaults managedRuntimeLoader="v4.0"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;processModel /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/applicationPoolDefaults&amp;gt;&lt;br /&gt;&amp;lt;/applicationPools&amp;gt;&lt;br /&gt;IIS Express 内建了五个应用程序池，分别对应.Net 2.0/4.0的集成/经典模式、以及一个非托管程序池。&lt;br /&gt;默认的程序池版本有 &amp;lt;spplicationPoolDefaults&amp;gt; 节来配置。&lt;/p&gt;&lt;p&gt;&amp;lt;sites&amp;gt; 节用于配置网站。&lt;br /&gt;网站的默认应用程序池和虚拟目录默认配置由 &amp;lt;applicationDefaults&amp;gt; 和 &amp;lt;virtualDirectoryDefaults&amp;gt; 节点配置。&lt;/p&gt;&lt;p&gt;&amp;#9312;.每个 &amp;lt;site&amp;gt; 就是一个网站。&lt;/p&gt;&lt;p&gt;这和IIS中的网站是一样的概念。&lt;br /&gt;serverAutoStart 设置了是否随着 IIS Express的启动而自动启动。&lt;br /&gt;如果设置为true，那么每次 IIS Express 启动都会自动加载（如果没有指定网站的话），否则只有以指定特定网站的模式运行时才会加载。&lt;/p&gt;&lt;p&gt;使用IIS Express加载特定网站的语法是： IISExpress.exe /site:&amp;lt;站点名&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;#9313;.&amp;lt;site&amp;gt; 下的&amp;lt;bindings&amp;gt;设置了这个站点的绑定信息。&lt;/p&gt;&lt;p&gt;节点下的每个&amp;lt;binding&amp;gt;都是一个端口绑定信息。&lt;br /&gt;典型的绑定配置如下：&amp;lt;binding protocol="http" bindingInformation="*:8080:localhost" /&amp;gt;&lt;/p&gt;&lt;p&gt;protocol 指定了绑定的协议类型（IIS Express内建了 HTTP 和 HTTPS两种协议支持），&lt;br /&gt;而&amp;#8220;*:8080:localhost&amp;#8221;则指定的绑定的具体信息，&lt;br /&gt;它有三个部分组成：&amp;#8220;绑定的IP:端口:主机名&amp;#8221;。&lt;br /&gt;默认情况下，绑定到任何本地IP、非保留端口、绑定到localhost。&lt;/p&gt;&lt;p&gt;&amp;#9314;.&amp;lt;application&amp;gt; 这个节设置了网站的应用程序&lt;/p&gt;&lt;p&gt;每个网站都需要至少一个映射路径为&amp;#8220;/&amp;#8221;应用程序（它映射到根目录）。&lt;br /&gt;除此之外，你可以继续添加并行的不同路径的 &amp;lt;application&amp;gt; ，这就类似于IIS中的网站里配置的应用程序。&lt;/p&gt;&lt;p&gt;例如，&lt;br /&gt;在FishSite这个网站中，我需要添加一个单独的应用程序，映射到根目录下的fish目录，那么我就可以这样配置：&lt;br /&gt;在&amp;lt;site&amp;gt;中，只有 path="/" 这个应用程序是必须的（不能缺少），其它都是可以任意添加的。&lt;/p&gt;&lt;p&gt;&amp;#9315;.&amp;lt;virtualDirectory&amp;gt; 设置了目录的映射信息&lt;br /&gt;在每个&amp;lt;application&amp;gt;节下，必须至少存在一个 path="/" 的 virtualDirectory，它代表了这个目录映射的位置。&lt;br /&gt;除此之外，可以手动添加多个映射的路径不同的虚拟目录。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2358525.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2012/02/19/2358525.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2012/02/19/2358478.html</id><title type="text">用IIS 7.5 Express代替IIS和开发工具vs自带的ASP.NET Development Server</title><summary type="text">好处1. ASP.NET Development Server 只能本机访问，IIS 7.5 Express可以通过修改配置文件允许远程访问2. 文件比较小 12M，简练并且易于安装3. 支持创建虚拟目录，支持运行多个 Web Application ，提供了完整的Web服务器功能—包括SSL, URL重写，多媒体支持和所有其他的IIS 7.x模块。 http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension.aspx4. </summary><published>2012-02-19T11:38:00Z</published><updated>2012-02-19T11:38:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2012/02/19/2358478.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2012/02/19/2358478.html"/><content type="html">&lt;p&gt;好处&lt;/p&gt;&lt;p&gt;1. ASP.NET Development Server 只能本机访问，IIS 7.5 Express可以通过修改配置文件允许远程访问&lt;/p&gt;&lt;p&gt;2. 文件比较小 12M，简练并且易于安装&lt;/p&gt;&lt;p&gt;3. 支持创建虚拟目录，支持运行多个 Web Application ，提供了完整的Web服务器功能&amp;#8212;包括SSL, URL重写，多媒体支持和所有其他的IIS 7.x模块。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. 可以跟VS集成，在Visual Studio中不需要管理员权限即可启动和调试程序。&lt;/p&gt;&lt;p&gt;5. 它的可扩展模型和web.config配置结构和IIS 7.x是一样的。&lt;/p&gt;&lt;p&gt;6.它可以和IIS Web服务器还有ASP.NET开发服务器同时运行在同一台机器上（他们不会相互冲突）&lt;/p&gt;&lt;p&gt;7.它支持Windows XP及更高版本的操作系统&amp;#8212;在所有操作系统平台上提供了完整的IIS 7.x功能集。&lt;/p&gt;&lt;p&gt;8.性能上可以满足至少几十人并发要求 &lt;/p&gt;&lt;p&gt;9.可以命令行方式运行，便于打包部署测试程序。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1. 安装&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 下载地址 &lt;a href="http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=abc59783-89de-4adc-b770-0a720bb21deb&amp;amp;displaylang=zh-cn"&gt;http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=abc59783-89de-4adc-b770-0a720bb21deb&amp;amp;displaylang=zh-cn&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 安装后程序路径&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; C:\Program Files (x86)\IIS Express&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 配置文件路径&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [我的文档]/IISExpress\config\&lt;/p&gt;&lt;p&gt;2. 跟程序一起打包发布&lt;/p&gt;&lt;p&gt;命令行介绍&lt;/p&gt;&lt;p&gt;&amp;nbsp;iisexpress [/config:config-file] [/site:site-name] [/systray:boolean] &lt;/p&gt;&lt;p&gt;&amp;nbsp;配置文件可直接基于默认的配置文件修改， 默认使用的配置文件是在:&lt;/p&gt;&lt;p&gt;&amp;nbsp;[我的文档]/IISExpress\config\applicationhost.config &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;配置文件随应用程序发布，然后分别创建两个批处理文件，&lt;br /&gt;用以启动和停止IIS Express服务，非常方便，&lt;br /&gt;批处理内容大概就像这样： &lt;br /&gt;启动：start F:/Projects/IIS Express/iisexpress.exe /config:F:/Projects/XXX/applicationhost.config /systray:true /site:MTLOralDemo &lt;/p&gt;&lt;p&gt;停止：TASKKILL /F /IM iisexpress.exe /T&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;启动一个临时的网站&lt;br /&gt;iisexpress /path:&amp;lt;网站目录&amp;gt; /port:&amp;lt;端口&amp;gt; /clr:&amp;lt;CLR版本，V2.0|V4.0&amp;gt;&lt;br /&gt;iis express会复制一份配置文件到临时目录，并变更其中的站点信息后再启动，因此不会影响到本机已经配置的网站。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 跟VS集成&lt;/p&gt;&lt;p&gt;可以这样运行&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/anan/使用IISExpress.png" width="500" height="732" /&gt;&lt;/p&gt;&lt;p&gt;修改新项目永久使用IIS Express运行，可以如下设置&lt;/p&gt;&lt;p&gt;在VS 2010中，选择菜单&amp;nbsp; 工具    --&amp;gt; 选项 --&amp;gt;&amp;nbsp;项目和解决方案 --&amp;gt; Web项目 ，选中 将IIS Express用于新的基于文件的网站和项目&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/anan/修改vs使用IISExpress75.png" width="747" height="491" /&gt;&lt;/p&gt;&lt;p&gt;3.远程访问设置 &lt;/p&gt;&lt;p&gt;&amp;nbsp; 默认配置文件位于：[我的文档]\IISExpress\config\applicationhost.config。记事本打开找到：&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp; 找到配置文件中 sites/site/bindings &lt;/p&gt;&lt;p&gt;&amp;nbsp; 增加自己要设置的节点，格式如下：&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;binding protocol="http" bindingInformation="*:[端口]:[计算机名或外部IP地址、绑定域名]" /&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 例如：&lt;/p&gt;&lt;p&gt;&amp;lt;site name="程序站点名" id="2"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;application path="/" applicationPool="Clr4IntegratedAppPool"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;virtualDirectory path="/" physicalPath="程序路径" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/application&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;bindings&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;binding protocol="http" bindingInformation="*:8085:localhost" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 增加&amp;lt;binding protocol="http" bindingInformation="*:8085:192.168.1.1" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;增加&amp;lt;binding protocol="http" bindingInformation="*:80:demo.mysite.com" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/bindings&amp;gt;&lt;br /&gt;&amp;lt;/site&amp;gt;&lt;/p&gt;&lt;p&gt;增加了两个访问：&lt;/p&gt;&lt;p&gt;a. 基于IP局域网带端口8085(注意打开本地防火墙设置)局域网访问&lt;/p&gt;&lt;p&gt;b. 设置了&lt;a href="http://demo.mysite.com/"&gt;http://demo.mysite.com/&lt;/a&gt;&amp;nbsp;域名解析访问&lt;/p&gt;&lt;p&gt;&amp;nbsp;上面设置好了以后再用管理员身份打开cmd ，运行如下命令：&lt;br /&gt;&amp;nbsp; netsh http add urlacl url=http://192.168.1.1:8085/ user=everyone &lt;br /&gt;&amp;nbsp; netsh http add urlacl url=http://demo.mysite.com:80/ user=everyone &lt;/p&gt;&lt;p&gt;提示&lt;br /&gt;已成功添加 URL 保留项&lt;br /&gt;说明增加成功，可以启动IIS Express直接用 &lt;a href="http://192.168.1.1:8085/"&gt;http://192.168.1.1:8085/&lt;/a&gt; 局域网访问网站了，也可以用&lt;a href="http://demo.mysite.com/"&gt;http://demo.mysite.com/&lt;/a&gt; 域名解析方式访问(配置本地host或者修改域名真实解析)。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;4.虚拟目录设置&lt;/p&gt;&lt;p&gt;类似于下面这样： &lt;br /&gt;&amp;lt;site name="程序站点名" id="1280170558"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;application path="/" applicationPool="Clr2IntegratedAppPool"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;virtualDirectory path="/" physicalPath="C:/IISExpress/DemoApp/empty" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/application&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;application path="/AppService" applicationPool="Clr2IntegratedAppPool"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;virtualDirectory path="/" physicalPath="C:/IISExpress/DemoApp/AppService" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/application&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;bindings&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;binding protocol="http" bindingInformation="*:8088:192.168.79.166" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/bindings&amp;gt;&lt;br /&gt;&amp;lt;/site&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我尝试过多个virtualDirectory节点，但发现Web Application不能正常工作，而且多个虚拟目录也不是使用独立的 Web.config，后来通过配置application 解决。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果站点有Spring之类的东西，运行时会出现错误，请将 applicationPool 配置成 Clr2ClassicAppPool。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;5. 配置多个站点 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 多个站点只要配置多个 site 节点就可以了，具体配置都差不多，但多个站点需要使用不同的端口。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果需要同时运行多个站点，打开cmd 中再增加几条修改相应的参数就行了，相当于同时运行多个 iis express 实例,具体见3。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;6. 性能测试结果 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 分别做了以下测试，测试结果性能满足要求： &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 1. 写了个简单测试页面，使用Load Runner 进行200路并发压力测试，进行了2小时。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; 2. 正式产品部署，我们的产品总共运行了9个 iis express进程，分别侦听在8080~8089端口，我们整个部门几十个人同时模拟用户访问站点并实际使用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转改于 &lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.csdn.net/jh_zzz/article/details/5821241"&gt;http://blog.csdn.net/jh_zzz/article/details/5821241&lt;/a&gt; &lt;/p&gt;&lt;a href="http://apps.hi.baidu.com/share/detail/32544301"&gt;http://apps.hi.baidu.com/share/detail/32544301&lt;/a&gt;  &lt;img src="http://www.cnblogs.com/anan/aggbug/2358478.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2012/02/19/2358478.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2012/02/01/2334436.html</id><title type="text">RedSn0w 0.9.10b5 越狱iphone 4 ios 5.0.1 Cydia闪退解决</title><summary type="text">方法一(推荐简单)：将系统语言 设置为 英文 ，就可以添加源，添加好源以后 安装好 appsync 软件，再把语言修改回来，就好了。方法缺点：每次给 Cydia 添加源是，都要把语言设置成 英文，添加好了修改改回来。 下面的方法，一劳永逸方法二：1 电脑需要安装 iTools（或者其他可以管理 iPhone 文件的软件）2 复制 “/User/Librery/” 下的 “Keyboard” 文件夹到 “/var/root/Librery/” 方法三：1 因为需要修改系统文件，所以首先安装 iFile；2 复制 “/User/Librery/” 下的 “Keyboard” 文件夹到 “/var.</summary><published>2012-02-01T05:30:00Z</published><updated>2012-02-01T05:30:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2012/02/01/2334436.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2012/02/01/2334436.html"/><content type="html"> 方法一(推荐简单)：&lt;div&gt;将系统语言 设置为 英文 ，就可以添加源，添加好源以后 安装好 appsync 软件，再把语言修改回来，就好了。&lt;/div&gt;&lt;div&gt;方法缺点：每次给 Cydia 添加源是，都要把语言设置成 英文，添加好了修改改回来。&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;下面的方法，一劳永逸&lt;/div&gt;&lt;div&gt;方法二：&lt;/div&gt;&lt;div&gt;1 电脑需要安装 iTools（或者其他可以管理 iPhone 文件的软件）&lt;br /&gt;2 复制 &amp;#8220;/User/Librery/&amp;#8221; 下的 &amp;#8220;Keyboard&amp;#8221; 文件夹到 &amp;#8220;/var/root/Librery/&amp;#8221;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;方法三：&lt;/div&gt;&lt;div&gt;1 因为需要修改系统文件，所以首先安装 iFile；&lt;br /&gt;2 复制 &amp;#8220;/User/Librery/&amp;#8221; 下的 &amp;#8220;Keyboard&amp;#8221; 文件夹到 &amp;#8220;/var/root/Librery/&amp;#8221; &lt;br /&gt;3 点 &amp;#8220;/var/root/Librery/Keyboard&amp;#8221; 文件夹右边的那个右箭头，所有权改为：&lt;br /&gt;&amp;nbsp; 所有者：Root 组：Wheel，并选择&amp;#8220;应用到所有层级&amp;#8221; &lt;/div&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2334436.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2012/02/01/2334436.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2011/12/25/2301057.html</id><title type="text">上海电信 华为HG8240R 光猫 破解</title><summary type="text">1. 超级用户这台光猫的本质是一台迷你型的电脑，有自己的CPU，存储器之类，当然也有自己的系统，精简版的linux。知道了这个接下来就好做了。第一步把你的电脑用网线接到光猫的任意LAN口上。点击开始菜单，在运行框中输入cmd第二步，在打开的界面中（DOS中）输入telnet 192.168.1.1 （win7用户请先开启telnet服务：开始菜单-》控制面板-》程序界面-》“打开或关闭Windows功能”-》选择上Telnet客户端）会出现以下界面Welcome Visiting Huawei Home GatewayCopyright by Huawei Technologies Co., </summary><published>2011-12-25T08:09:00Z</published><updated>2011-12-25T08:09:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2011/12/25/2301057.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2011/12/25/2301057.html"/><content type="html">&lt;p&gt;1. 超级用户&lt;/p&gt;&lt;p&gt;这台光猫的本质是一台迷你型的电脑，有自己的CPU，存储器之类，当然也有自己的系统，精简版的linux。&lt;br /&gt;知道了这个接下来就好做了。&lt;/p&gt;&lt;p&gt;第一步把你的电脑用网线接到光猫的任意LAN口上。&lt;br /&gt;点击开始菜单，在运行框中输入cmd&lt;br /&gt;第二步，在打开的界面中（DOS中）输入&lt;br /&gt;telnet 192.168.1.1 （win7用户请先开启telnet服务：开始菜单-》控制面板-》程序界面-》&amp;#8220;打开或关闭Windows功能&amp;#8221;-》选择上Telnet客户端）&lt;/p&gt;&lt;p&gt;会出现以下界面&lt;br /&gt;Welcome Visiting Huawei Home Gateway&lt;br /&gt;Copyright by Huawei Technologies Co., Ltd.&lt;/p&gt;&lt;p&gt;输入用户名/密码：root/admin&lt;br /&gt;Login:root 回车&lt;/p&gt;&lt;p&gt;Password：admin 回车&lt;/p&gt;&lt;p&gt;登陆成功显示提示符&lt;br /&gt;WAP〉shell 回车&lt;/p&gt;&lt;p&gt;输入shell 后回车&lt;br /&gt;输入 grep telecomadmin /mnt/jffs2/hw_ctree.xml 回车&lt;/p&gt;&lt;p&gt;获得&lt;br /&gt;&amp;lt;X_HW_WebUserInfoInstance InstanceID="2" UserName="telecomadmin" Password="telecomadmin1234565" UserLevel="0" Enable="1"/&amp;gt;&lt;br /&gt;其中的username/pssword等号后的内容即为超级用户的帐号密码&lt;/p&gt;&lt;p&gt;如图&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/anan/破解密码.png" width="664" height="382" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;2. 破解连接数量限制（未测试）&lt;/p&gt;&lt;p&gt;输入 vi /mnt/jffs2/hw_ctree.xml 回车&lt;br /&gt;修改其中TotalTerminalNumber=5 中的5 为你要的数字比如说100之类的&lt;br /&gt;改好后 按下Esc键&lt;br /&gt;然后输入：wq 保存退出&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/anan/修改连接数.png" width="674" height="453" /&gt;&lt;/p&gt;&lt;p&gt;3. 路由桥接模式&lt;/p&gt;&lt;p&gt;DMZ主机设置，端口映射，DDNS等设置，可以利用桥接路由-路由器桥接到HG8240R光纤猫，协同完成。解除了电信的诸多限制。&lt;/p&gt;&lt;p&gt;具体下载（解压密码和excel密码均为：attagain.com）：&lt;/p&gt;&lt;p&gt;&lt;a href="http://download.csdn.net/detail/attagain/3937529"&gt;http://download.csdn.net/detail/attagain/3937529&lt;/a&gt;&lt;br /&gt;没有密码的版本下载：&lt;/p&gt;&lt;p&gt;&lt;a href="http://files.cnblogs.com/anan/华为光纤猫HG8240R设置.zip"&gt;/Files/anan/华为光纤猫HG8240R设置.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2301057.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2011/12/25/2301057.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2011/08/08/2131099.html</id><title type="text">Andriod程序反编译apk</title><summary type="text">一.反编译Apk得到Java源代码首先要下载两个工具：dex2jar:将apk中的classes.dex转化成Jar文件下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI是一个反编译工具，可以直接查看Jar包的源代码。下载地址:http://laichao.googlecode.com/files/jdgui.zip具体步骤：1. 首先将apk文件，将后缀改为zip，解压，得到其中的classes.dex，它就是java文件编译再通过dx工具打包而成的； 2. 解压下载的dex2jar，将clas.</summary><published>2011-08-08T08:42:00Z</published><updated>2011-08-08T08:42:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2011/08/08/2131099.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2011/08/08/2131099.html"/><content type="html"> &lt;p&gt;一.反编译Apk得到Java源代码&lt;br /&gt;首先要下载两个工具：&lt;/p&gt;&lt;p&gt;dex2jar:将apk中的classes.dex转化成Jar文件&lt;br /&gt;下载地址:&lt;br /&gt;&lt;a href="http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip"&gt;http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;JD-GUI&lt;p&gt;是一个反编译工具，可以直接查看Jar包的源代码。&lt;br /&gt;下载地址:&lt;br /&gt;&lt;a href="http://laichao.googlecode.com/files/jdgui.zip"&gt;http://laichao.googlecode.com/files/jdgui.zip&lt;/a&gt;&lt;p&gt;具体步骤：&lt;br /&gt;1. 首先将apk文件，将后缀改为zip，解压，得到其中的classes.dex，它就是java文件编译再通过dx工具打包而成的； &lt;br /&gt;2. 解压下载的dex2jar，将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录，&lt;br /&gt;&amp;nbsp;&amp;nbsp; 运行 &lt;br /&gt;&amp;nbsp;&amp;nbsp; dex2jar.bat classes.dex &lt;br /&gt;&amp;nbsp;&amp;nbsp; 生成classes.dex.dex2jar.jar &lt;br /&gt;3. 运行JD-GUI，打开上面生成的jar包，即可看到源代码了。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;二。反编译apk生成程序的源代码和图片、XML配置、语言资源等文件&lt;br /&gt;如果是只是汉化软件，这将特别有用。&lt;br /&gt;首先还是下载工具，这次用到的是apktool，下载地址：&lt;br /&gt;&lt;a href="http://code.google.com/p/android-apktool/"&gt;http://code.google.com/p/android-apktool/&lt;/a&gt;，&lt;br /&gt;apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。&lt;/p&gt;&lt;p&gt;具体步骤：&lt;br /&gt;1.将下载的两个包解压到同一个文件夹下，应该会有三个文件：aapt.exe，apktool.bat，apktool.jar； &lt;br /&gt;2.在命令行下定位到apktool.bat文件夹，输入以下命令： &lt;br /&gt;apktool d C:\***.apk&amp;nbsp; C:\***文件夹 &lt;/p&gt;&lt;p&gt;命令行解释：apktool d [要反编译的apk文件 ] [输出文件夹]，&lt;br /&gt;特别注意：你要反编译的文件一定要放在C盘的根目录里； &lt;/p&gt;&lt;p&gt;3.将反编译完的文件重新打包成apk，很简单，输入apktool b c:\***文件夹（你编译出来文件夹）即可。&lt;/p&gt;&lt;p&gt;三。一个成品反编译软件&lt;/p&gt;&lt;p&gt;Android反编译工具绿色版V2.0（改进版）&lt;/p&gt;&lt;p&gt;&lt;a href="http://morry.iteye.com/blog/776718"&gt;http://morry.iteye.com/blog/776718&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Android反编译工具绿色版V2.1（改进版)&lt;br /&gt;&lt;a href="http://morry.iteye.com/blog/924137"&gt;http://morry.iteye.com/blog/924137&lt;/a&gt;&lt;br /&gt;四。防止反编译（混淆）&lt;br /&gt;&lt;a href="http://www.maxhis.info/androiding/protect-apk-from-decompile/"&gt;http://www.maxhis.info/androiding/protect-apk-from-decompile/&lt;/a&gt;&amp;nbsp;  &lt;/p&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2131099.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2011/08/08/2131099.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2011/06/12/2078876.html</id><title type="text">远程桌面连接问题</title><summary type="text">系统安装Microsoft_.NETFramework35_sp1.exe造成远程桌面不能连接问题的解决办法（可能是跟ati或者Nvidia显卡驱动冲突导致的）。打开注册表：[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]添加一条“dword”，值为16进制的20"SessionImageSize"=dword:00000020Where 00000020 is hex for 32重启机器后，远程桌面又可以连接了。http://blogs.tech</summary><published>2011-06-12T06:47:00Z</published><updated>2011-06-12T06:47:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2011/06/12/2078876.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2011/06/12/2078876.html"/><content type="html">&lt;p&gt;系统安装&lt;/p&gt;&lt;p&gt;Microsoft_.NETFramework35_sp1.exe&lt;/p&gt;&lt;p&gt;造成远程桌面不能连接问题的解决办法（可能是跟ati或者Nvidia显卡驱动冲突导致的）。&lt;/p&gt;&lt;p&gt;打开注册表：&lt;br /&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]&lt;br /&gt;添加一条&amp;#8220;dword&amp;#8221;，值为16进制的20&lt;br /&gt;"SessionImageSize"=dword:00000020&lt;br /&gt;Where 00000020 is hex for 32&lt;br /&gt;重启机器后，远程桌面又可以连接了。&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.technet.com/brad_rutkowski/archive/2008/01/04/systemroot-system32-rdpdd-dll-failed-to-load.aspx"&gt;http://blogs.technet.com/brad_rutkowski/archive/2008/01/04/systemroot-system32-rdpdd-dll-failed-to-load.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;其他情况&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;有网友遇到过此类情况，一般都是因为打过系统补丁后把远程桌面里的对号冲掉了，联系机房重新点上对号即可，具体步骤是点我的电脑右键--属性--远程--启用这台计算机上的远程桌面即可！&lt;/p&gt;&lt;p&gt;如果点上对号了还连不上请按照下面的解决办法解决！&lt;br /&gt;A、请查看HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server的fDenyTSConnections的值，请修改为0，此解决办法来自360漏洞修复工作人员；&lt;/p&gt;&lt;p&gt;B、为什么 Windows Server 2003 打上SP2补丁,就不能通过远程桌面连接上去了?服务开了,策略没限制,远程也启用了,可是就是连不上去&lt;br /&gt;回答：根据您的描述，我对这个问题的理解是：远程桌面连接失败。如果我的理解有误，请告诉我。&lt;br /&gt;这一问题应该是SP2里终端服务的驱动文件没有正确复制造成的，请参考下面的步骤修复这一问题：&lt;br /&gt;1，将%windir%\driver cache\i386下的termdd.sys复制到%windir%\system32\drivers&lt;br /&gt;2，重启服务器，测试问题是否消失&lt;br /&gt;如果在%windir%\driver cache\i386下没有找到这一文件的话，您可以解压SP2的安装文件，从中寻找这一文件。&lt;/p&gt;&lt;p&gt;C、windows2003系统更新后，远程桌面连接不上了。&lt;br /&gt;删除后又安装，还是不行，用netstat －an 命令查看，3389端口是开着的。&lt;br /&gt;查看系统日志，发现了&amp;#8220;弹出应用程序: : SystemRootSystem32RDPDD.dll failed to load&amp;#8221;。&lt;br /&gt;又上网查了很多资料，说有可能是ati或者Nvidia显卡驱动导致的。但是我最近没有更新显卡驱动。&lt;br /&gt;有有一说是net framework 3.0 sp2导致的。这个倒是有可能，因为刚打上了这个补丁。&lt;br /&gt;按照给出的解决方法：&lt;br /&gt;打开注册表：&lt;br /&gt;[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]&lt;br /&gt;添加一条&amp;#8220;dword&amp;#8221;，值为16进制的20&lt;br /&gt;&amp;#8220;SessionImageSize&amp;#8221;=dword:00000020&lt;br /&gt;Where 00000020 is hex for 32&lt;br /&gt;重启机器后，远程桌面又可以连接了。&lt;br /&gt;下面是给出解决之道的网址：&lt;br /&gt;&lt;a href="http://blogs.technet.com/brad_rutkowski/archive/2008/01/04/systemroot-system32-rdpdd-dll-failed-to-load.aspx"&gt;http://blogs.technet.com/brad_rutkowski/archive/2008/01/04/systemroot-system32-rdpdd-dll-failed-to-load.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;还有一种情况，解决方法如下 :&lt;br /&gt;1. 请暂时关闭计算机上的防火墙。&lt;br /&gt;2. 当客户端不能登陆Windows Server 2003的服务器时，使用客户端PING Windows Server 2003的服务器的IP地址和计算机名，查看是否能PING通。点击&amp;#8220;开始&amp;#8594;运行&amp;#8221;并输入&amp;#8220;CMD&amp;#8221;&amp;#8594;Ping &amp;#8211;t **.**.**.**（服务器的IP地址）察看都否有丢包的现象。&lt;br /&gt;3. 在出现问题的时候，使用局域网内的其他客户端使用远程桌面登陆Windows Server 2003的服务器，查看是否能成功。&lt;br /&gt;4. 建议您尝试一次Clean Boot，排除第三方软件造成的问题。&lt;br /&gt;a. 运行MSCONFIG。&lt;br /&gt;b. 在常规下选择 选择性启动。&lt;br /&gt;c. 然后清除Process System.ini File, Process Win.ini File和Load Startup Items 的复选框，但是保留使用原始Boot.ini。&lt;br /&gt;d. 在服务下，先点隐藏所有windows 服务，然后选择 disable all。&lt;br /&gt;e. 然后重新启动。观察问题是否依旧发生。&lt;br /&gt;5. 请暂时在windows server 2003上卸载安装的SP2补丁，查看该问题是否依然存在。&lt;br /&gt;6. 设置IgnoreRegUserConfigErrors值。&lt;br /&gt;a. 打开注册表编辑器。&lt;br /&gt;b. 导航到以下子项：HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server&lt;br /&gt;c. 在右边的窗口菜单中新建一个DWORD值。&lt;br /&gt;d. 将新值命名为IgnoreRegUserConfigErrors。&lt;br /&gt;e. 然后右键点击IgnoreRegUserConfigErrors，点击&amp;#8220;修改&amp;#8221;。&lt;br /&gt;f. 将&amp;#8220;数值数据&amp;#8221;设置为1，&amp;#8220;基数&amp;#8221;选择&amp;#8220;十进制&amp;#8221;。&lt;br /&gt;g. 退出注册表编辑器。&lt;br /&gt;完 &lt;br /&gt;详细情况参看Microsoft社区的一篇文章&lt;br /&gt;&lt;a href="http://social.microsoft.com/Forums/it-IT/windowsserversystemzhchs/thread/5302ccb5-bb70-4a3d-8291-743fc7f005cd"&gt;http://social.microsoft.com/Forums/it-IT/windowsserversystemzhchs/thread/5302ccb5-bb70-4a3d-8291-743fc7f005cd&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2078876.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2011/06/12/2078876.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2011/06/10/2077434.html</id><title type="text">Enterprise Library 5.0 Hands On Lab（1）：数据访问程序块（一）</title><summary type="text">第一步 创建数据库，根据 \Data Access\setup\DataAccessQuickStarts.sql第二步打开 Data Access\exercises\ex01\begin 目录下 项目文件DataEx1.sln 第三步查看应用程序在Visual Studio解决方案管理器中选择MainForm.cs文件，选择 View | Designer 菜单，应用程序包含一个DataGrid和几个Menu，我们将使用数据访问应用程序块来统计数据库中的Customer的数量，并加载数据到DataGrid中。第四步 实现Customer菜单项 1．选中CustomerManagment项目</summary><published>2011-06-10T03:17:00Z</published><updated>2011-06-10T03:17:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2011/06/10/2077434.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2011/06/10/2077434.html"/><content type="html">&lt;p&gt;第一步 &amp;nbsp;创建数据库，根据 \Data Access\setup\DataAccessQuickStarts.sql&lt;br /&gt;第二步&amp;nbsp;&amp;nbsp;打开 Data Access\exercises\ex01\begin 目录下 项目文件DataEx1.sln &lt;/p&gt;&lt;p&gt;第三步&amp;nbsp;&amp;nbsp;查看应用程序&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在Visual Studio解决方案管理器中选择MainForm.cs文件，选择 View | Designer 菜单，&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;应用程序包含一个DataGrid和几个Menu，我们将使用数据访问应用程序块来统计数据库中的Customer的数量，并加载数据到DataGrid中。&lt;/p&gt;&lt;p&gt;第四步 实现Customer菜单项&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1．选中CustomerManagment项目，选择 Project | Add Reference &amp;#8230; 菜单命令，在打开的对话框中选择Browse，并添加如下三个程序集（Microsoft Enterprise Library 5.0\Bin）。&lt;br /&gt;&amp;nbsp;&amp;nbsp; Microsoft.Practices.EnterpriseLibrary.Common.dll&lt;br /&gt;&amp;nbsp;&amp;nbsp; Microsoft.Practices.EnterpriseLibrary.Data.dll&lt;br /&gt;必须添加Common程序集引用，因为Data Access Application Block支持度量机制（Interception）但是IInstrumentationEventProvider是在Common程序集中定义。&lt;/p&gt;&lt;p&gt;原来老的数据处理方法：&lt;/p&gt;&lt;p&gt;config文件&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="QuickStarts Instance" connectionString="Data Source=.;Initial Catalog=EntLibQuickStarts;Integrated Security=True"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; providerName="System.Data.SqlClient" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/connectionStrings&amp;gt;&lt;/p&gt;&lt;p&gt;程序代码&lt;/p&gt;&lt;p&gt;using Microsoft.Practices.EnterpriseLibrary.Data;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Database db = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //4.1&lt;br /&gt;&lt;span style="color: red"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; db = DatabaseFactory.CreateDatabase("QuickStarts Instance");&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = (int)db.ExecuteScalar(CommandType.Text, "select count(1) from Customers with(nolock)");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string message = string.Format("There are {0} customers in the database", count.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(message);&lt;/p&gt;&lt;p&gt;另一种通过&lt;/p&gt;&lt;p&gt;引用&lt;/p&gt;&lt;p&gt;Microsoft.Practices.ServiceLocation.dll&lt;br /&gt;Microsoft.Practices.Unity.dll&lt;br /&gt;Microsoft.Practices.Unity.Interception.dll&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; ServiceLocation 这个类是用来 Unity 取数据库实例。&lt;/p&gt;&lt;p&gt;config文件：&lt;/p&gt;&lt;p&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;configSections&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/configSections&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dataConfiguration defaultDatabase="QuickStarts Instance" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionStrings&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="QuickStarts Instance" connectionString="Data Source=.;Initial Catalog=EntLibQuickStarts;Integrated Security=True"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; providerName="System.Data.SqlClient" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;/p&gt;&lt;p&gt;程序代码：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Database db = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //4.1&lt;br /&gt;&lt;span style="color: red"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; db = EnterpriseLibraryContainer.Current.GetInstance&amp;lt;Database&amp;gt;("QuickStarts Instance");&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int count = (int)db.ExecuteScalar(CommandType.Text, "select count(1) from Customers with(nolock)");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string message = string.Format("There are {0} customers in the database", count.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(message);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/anan/aggbug/2077434.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2011/06/10/2077434.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/anan/archive/2011/05/11/2042864.html</id><title type="text">Asp.NET的Trace追踪</title><summary type="text">当我们扑捉程序错误时，调试器是开发者们最得力的助手。然而，ASP.NET的跟踪，在调试时是一个很棒的不容忽视的辅助，它允许你的ASP.NET代码在执行期间输出消息，提供有用信息有效帮助你发现问题所在。调试器和跟踪这两个技术有一点区别。调试器是一种自然的交互技术它依赖于你有能力暂停程序执行并检查当前的状态。而跟踪是一种不干扰系统运行，简单的输出代码设定的跟踪信息（类似于经典的“printf”式调试），在执行结束时，你可以取得跟踪代码产生的输出并分析它。ASP.NET跟踪子系统通过控件，页面或者可以增加自身跟踪输出的组件显露出一个API，可以输出任何可用到的信息给你一些有意义的帮助。在ASP.NE</summary><published>2011-05-11T01:50:00Z</published><updated>2011-05-11T01:50:00Z</updated><author><name>安安</name><uri>http://www.cnblogs.com/anan/</uri></author><link rel="alternate" href="http://www.cnblogs.com/anan/archive/2011/05/11/2042864.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/anan/archive/2011/05/11/2042864.html"/><content type="html">&lt;p&gt;当我们扑捉程序错误时，调试器是开发者们最得力的助手。&lt;br /&gt;然而，ASP.NET的跟踪，在调试时是一个很棒的不容忽视的辅助，它允许你的ASP.NET代码在执行期间输出消息，提供有用信息有效帮助你发现问题所在。&lt;/p&gt;&lt;p&gt;调试器和跟踪这两个技术有一点区别。&lt;br /&gt;调试器是一种自然的交互技术它依赖于你有能力暂停程序执行并检查当前的状态。&lt;br /&gt;而跟踪是一种不干扰系统运行，简单的输出代码设定的跟踪信息（类似于经典的&amp;#8220;printf&amp;#8221;式调试），在执行结束时，你可以取得跟踪代码产生的输出并分析它。&lt;/p&gt;&lt;p&gt;ASP.NET跟踪子系统通过控件，页面或者可以增加自身跟踪输出的组件显露出一个API，可以输出任何可用到的信息给你一些有意义的帮助。&lt;br /&gt;在ASP.NET中，跟踪与页面和运行时紧密的整合在一起。&lt;/p&gt;&lt;p&gt;可以通过&lt;/p&gt;&lt;p&gt;&amp;lt;%@ Page Trace="true"&lt;/p&gt;&lt;p&gt;在单独的某页上启用跟踪，这种情况下跟踪信息作为页面的一部分发送给浏览器来显示。&lt;/p&gt;&lt;p&gt;也可以修改web.config中&lt;/p&gt;&lt;p&gt;&amp;lt;trace enabled="true"&amp;gt;&lt;/p&gt;&lt;p&gt;启用整站的跟踪，通过 &lt;u&gt;http://网站/Trace.axd&lt;/u&gt; 就可以进行追踪访问。&lt;/p&gt;&lt;p&gt;跟踪作为一个子系统构建为ASP.NET的一个基础结构，给应用程序提供诊断信息关于某个单独请求。&lt;br /&gt;通过跟踪，你可以分析浏览器和WEB服务器交换的数据，包括请求的详细信息，时间调配信息，服务器变量，Cookies，头信息，Session状态等等。&lt;/p&gt;&lt;p&gt;代码添加Trace机制&lt;/p&gt;&lt;p&gt;//在Page或其继承类中&lt;br /&gt;&lt;span style="color: #0000ff"&gt;Trace.Write&lt;/span&gt;("Your message");&lt;/p&gt;&lt;p&gt;//ASP.NET 应用程序的任意地方，通过HttpContext的Trace属性显露TraceContext类的一个实例给开发者&lt;br /&gt;&lt;span style="color: #0000ff"&gt;HttpContext.Current.Trace.Write&lt;/span&gt;("Your message");&lt;/p&gt;&lt;p&gt;TraceContext类还有一个Warn方法，跟Write不同的是它将文本呈现为&lt;span style="color: #ff0000"&gt;红色&lt;/span&gt;。Write和Warn都有一些重载方法:&lt;/p&gt;&lt;p&gt;// Write overloads重载&lt;br /&gt;public void Write ( String message )&lt;br /&gt;public void Write ( String category , String message )&lt;br /&gt;public void Write ( String category , String message , Exception errorInfo )&lt;br /&gt;&amp;nbsp;　&lt;br /&gt;// Match Warn overloads&lt;br /&gt;public void Warn ( String message )&lt;br /&gt;public void Warn ( String category , String message )&lt;br /&gt;public void Warn ( String category , String message , Exception errorInfo ) &lt;/p&gt;&lt;p&gt;第一个重载将跟踪消息写入跟踪日志。&lt;br /&gt;第二个重载接受跟踪类别和跟踪内容,跟踪类别可以使用简短的跟踪信息，也可以是任何对应用程序或消息有用的字符串。&lt;br /&gt;第三个重载将跟踪信息写入跟踪日志，包括用户定义的所有类别、跟踪消息和错误信息。跟踪日志不接受HTML格式，文本在呈现到浏览器之前转义。&lt;/p&gt;&lt;p&gt;例如：&lt;/p&gt;&lt;p&gt;Trace.Warn("跟踪分类", "跟踪信息",new Exception("出错了，数据对象为空"));&lt;/p&gt;&lt;p&gt;显示为：&lt;/p&gt;&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/anan/跟踪代码显示.png" width="1124" height="80" /&gt;&lt;/p&gt;&lt;p&gt;TraceContext类其他两个属性：&lt;br /&gt;IsEnabled属性 是布尔类型，表示当前 Web 请求是否启用跟踪。&lt;br /&gt;TraceMode属性 设置跟踪消息输出的排序顺序，一个枚举类型，包含SortByCategory（分类） 和 SortByTime（时间）。&amp;nbsp;&lt;/p&gt;&lt;p&gt;可以编写程序设置IsEnable来启用跟踪。&lt;/p&gt;&lt;p&gt;在ASP.NET 2.0中，也可以使用新的属性Page类的TraceEnabled，该属性仅仅是对Trace.IsEnabled的包装。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class Page : TemplateControl, IHttpHandler&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 设置一个值，该值指示是否为 System.Web.UI.Page 对象启用跟踪。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果为该页启用跟踪，则为 true；否则为 false。默认值为 false。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Browsable(false)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [EditorBrowsable(EditorBrowsableState.Never)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool TraceEnabled { get; set; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 设置跟踪语句在页中的显示模式。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.TraceMode 枚举成员之一。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Browsable(false)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [EditorBrowsable(EditorBrowsableState.Never)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public TraceMode TraceModeValue { get; set; }&lt;/p&gt;&lt;p&gt;&amp;#8230;&amp;#8230;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;ASP.NET 2.0中web.config配置如下：&lt;/p&gt;&lt;p&gt;&amp;lt;trace&lt;br /&gt;&amp;nbsp;&amp;nbsp; enabled="true|false"&lt;br /&gt;&amp;nbsp;&amp;nbsp; localOnly="true|false"&lt;br /&gt;&amp;nbsp;&amp;nbsp; mostRecent="true|false"&lt;br /&gt;&amp;nbsp;&amp;nbsp; pageOutput="true|false"&lt;br /&gt;&amp;nbsp;&amp;nbsp; requestLimit="integer"&lt;br /&gt;&amp;nbsp;&amp;nbsp; traceMode="SortByTime|SortByCategory"&lt;br /&gt;&amp;nbsp;&amp;nbsp; writeToDiagnosticsTrace="true|false" /&amp;gt; &lt;/p&gt;&lt;p&gt;ASP.NET内建的跟踪查看器－－trace.axd,&lt;/p&gt;&lt;p&gt;Trace.axd是一个系统定义的HTTP handler，获取内部跟踪信息的缓存并显示到Web接口。&lt;/p&gt;&lt;p&gt;通过请求 应用程序根目录下的trace.axd（http://网站/Trace.axd） 访问跟踪查看器，&lt;/p&gt;&lt;p&gt;也可以给页面请求增加id=xxx参数 (http://网站/Trace.axd?id=0开始)来直接访问某个指定跟踪信息。&lt;/p&gt;&lt;p&gt;注意：&lt;br /&gt;1. 属性enabled&lt;br /&gt;通过enabled="true"激活trace.axd工具,但是不激活 跟踪信息作为页面的一部分 进行输出。&lt;br /&gt;这样可以启用追踪不影响用户页面的输出。&lt;br /&gt;这样做使得你可以在产品中打开跟踪却不影响用户页面的输出。原因见(2属性pageOutput)&lt;br /&gt;如：&lt;br /&gt;&amp;lt;trace enabled="true" /&amp;gt;&lt;br /&gt;2.属性pageOutput 表示是否在任意页中显示跟踪输出&lt;br /&gt;默认false，这样配置&lt;br /&gt;&amp;lt;trace enabled="true" pageOutput="false" /&amp;gt;&lt;br /&gt;可以省略pageOutput="false" 。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;所有的跟踪信息被TraceContext类缓存在一个DataSet对象中，&lt;br /&gt;当应用程序的AppDomain的HttpRuntime对象首次被初始化时，&lt;br /&gt;TraceContext类将被实例化。&lt;br /&gt;结果是当trace.axd被启用时，维护的跟踪信息越多，内存方面的消耗越多。&lt;/p&gt;&lt;p&gt;ASP.NET 2.0的一个新特性是允许使用TraceContext.TraceFinished事件，&lt;br /&gt;在收集完所有请求信息后被引发。&lt;br /&gt;TraceFinished处理程序提供了一个TraceFinishedEventArgs参数接受跟踪消息（TraceRecord）对象集合。&lt;br /&gt;每一条存储了一个单独的ASP.NET跟踪消息和所有相关数据，&lt;br /&gt;允许你采集这些信息并随意进行处理，&lt;br /&gt;显示到页面或者记录到自己的数据库等等&amp;nbsp;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;ASP.NET下的跟踪跟.NET Framework直接相关，Systems.Diagnostics命名空间定义了两个类: Trace 和 Debug. &lt;br /&gt;它们提供了对代码进行跟踪的常用方法。&lt;br /&gt;Trace 和 Debug类本质相同，都工作在很多特定模块之上例如侦听器。&lt;/p&gt;&lt;p&gt;侦听器搜集并将消息存储到Windows事件日志，文本文件，或者其他类似文件中。&lt;br /&gt;每个应用程序可以有它自己的一套侦听器；&lt;br /&gt;所有注册过的侦听器接受全部的发布消息。&lt;br /&gt;ASP.NET 2.0中跟踪子系统被进一步加强，&lt;span style="background-color: #00ffff; color: red"&gt;可以转发ASP.NET跟踪信息给任意一个已注册的.NET跟踪侦听器。&lt;/span&gt;&lt;br /&gt;通过打开web.config文件 &amp;lt;trace&amp;gt; 节的&lt;span style="background-color: #00ffff"&gt;writeToDiagnosticsTrace属性&lt;/span&gt;启用这一特性，&lt;br /&gt;如下所示：&lt;br /&gt;&amp;lt;trace enabled="true" pageOutput="false"&amp;nbsp; writeToDiagnosticsTrace="true" /&amp;gt;&lt;br /&gt;不过仅设置writeToDiagnosticsTrace属性还不行，还需要给程序注册一个或多个侦听器。&lt;br /&gt;可以通过&amp;lt;system.diagnostics&amp;gt; 节中的&amp;lt;trace&amp;gt;节实现，&lt;br /&gt;例如：&lt;br /&gt;&amp;lt;system.diagnostics&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;trace autoflush="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;listeners&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="myListener" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="System.Diagnostics.TextWriterTraceListener" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initializeData="c:\myListener.log" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/listeners&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/trace&amp;gt;&lt;br /&gt;&amp;lt;/system.diagnostics&amp;gt;&lt;br /&gt;这里有两件事要注意：&lt;br /&gt;第一，只有文本才能通过Write或Warn传递给侦听器，也就是说，侦听器不会存储一个标准的ASP.NET跟踪信息，而仅是跟踪信息块的内容。&lt;br /&gt;第二，你可以编写自定义的侦听器来发送跟踪信息到你选择的介质－－例如SQL Server 数据库，你所要做的仅是继承System.Diagnostics.TraceListener并重载一些方法。&lt;br /&gt;然后，&lt;br /&gt;将新类注册到要跟踪的WEB应用程序的web.config文件中。&lt;br /&gt;（更多关于编写自定义TraceListener请查阅msdn.microsoft.com/msdnmag/issues/06/04/CLRInsideOut.)&lt;/p&gt;&lt;p&gt;有一件有趣的事值得注意，ASP.NET 2.0中System.Web.dll新加了一个源自TraceListener的类型WebPageTraceListener，它与writeToDiagnosticsTrace配套使用。&lt;br /&gt;当WebPageTraceListener实例增加到跟踪侦听器集合后，写入 .NET Trace 日志的跟踪消息也将写入ASP.NET Trace日志。&lt;/p&gt;&lt;p&gt;最后，在ASP.NET 2.0中跟踪相关的还有一个新的&amp;lt;deployment&amp;gt;节被增加到 Web configuration 节中。&lt;br /&gt;&amp;lt;deployment retail="true|false" /&amp;gt;&lt;br /&gt;当 Retail 为 true 时，ASP.NET 将禁用在配置中定义的某些设置，如跟踪输出、自定义错误和调试能力。&lt;br /&gt;&amp;lt;deployment&amp;gt;节只可以在machine.config中设置。&lt;br /&gt;【译者：本节仅适用于计算机级别和应用程序级别的配置文件。】&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/anan/aggbug/2042864.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/anan/archive/2011/05/11/2042864.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
