<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Robot.Net's TechNet</title><subtitle type="text">Focus .Net Technology</subtitle><id>http://feed.cnblogs.com/blog/u/21924/rss</id><updated>2012-05-25T02:21:45Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/21924/rss"/><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/23/2467118.html</id><title type="text">VSS配置</title><summary type="text">http://www.cnblogs.com/FreeDong/articles/2193151.html公司要启动一个新的项目，一套客户关系管理系统（CRM）。由于是WEB项目，程序代码非常分散，所以决定用vss来搞定。做过项目的也许都知道vss是做什么的吧，这里不多说言归正传，现在来描述一下vss的服务器及客户端的配置。现在用Microsoft.Visual.SourceSafe.2005 和 VS2005 来做实例。 一、服务器端： 安装完vss在开始菜单中有两个文件，Microsoft Visual SourceSafe Administration便是服务器端的应用程序。1、启动Mi</summary><published>2012-04-23T13:41:00Z</published><updated>2012-04-23T13:41:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/23/2467118.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/23/2467118.html"/><content type="html">&lt;p&gt;&lt;a href="http://www.cnblogs.com/FreeDong/articles/2193151.html"&gt;http://www.cnblogs.com/FreeDong/articles/2193151.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 19px; font-family: verdana; font-size: 13px" class="Apple-style-span"&gt;公司要启动一个新的项目，一套客户关系管理系统（CRM）。由于是WEB项目，程序代码非常分散，所以决定用vss来搞定。做过项目的也许都知道vss是做什么的吧，这里不多说言归正传，现在来描述一下vss的服务器及客户端的配置。现在用&lt;span style="line-height: 19px; font-family: 'Courier New'" face="Courier New"&gt;Microsoft.Visual.SourceSafe.2005 和 VS2005 来做实例。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 一、服务器端：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 安装完vss在开始菜单中有两个文件，&lt;span style="line-height: 19px; font-family: 'Courier New'" face="Courier New"&gt;Microsoft Visual SourceSafe Administration便是服务器端的应用程序。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="line-height: 19px" lang="EN-US"&gt;&lt;span style="line-height: 19px"&gt;1、&lt;span style="line-height: 19px"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 19px"&gt;启动&lt;/span&gt;&lt;span style="line-height: 19px" lang="EN-US"&gt;Microsoft Visual SourceSafe Administrator&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="line-height: 19px; font-family: 'Courier New'" face="Courier New"&gt;&lt;span style="line-height: 19px; font-family: 'Courier New'" face="Courier New"&gt;&lt;span style="line-height: 19px" lang="EN-US"&gt;&lt;span style="line-height: 19px"&gt;&amp;nbsp; 2、&lt;span style="line-height: 19px"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 19px"&gt;创建&lt;/span&gt;&lt;span style="line-height: 19px" lang="EN-US"&gt;VSS&lt;/span&gt;&lt;span style="line-height: 19px"&gt;数据库&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/v1.gif" width="501" height="387" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/2.gif" width="502" height="387" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 选择一个已经建好的文件夹 如：d:\vss&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/3.gif" width="503" height="389" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/4.gif" width="507" height="392" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/5.gif" width="504" height="394" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/6.gif" width="795" height="201" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/7.gif" width="704" height="389" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3.启动访问Internet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这时&lt;span style="line-height: 19px; font-family: 'Courier New'" face="Courier New"&gt;退出VSS&lt;/span&gt;，将D:\vss设置共享，分配完全控制权限，根据需要给配给用户权限，我暂时分配为everyone。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 启动VSS&amp;nbsp; File&amp;#8212;&amp;#8212;&amp;gt;&lt;span style="line-height: 19px" lang="EN-US"&gt;&lt;span style="line-height: 19px" lang="EN-US"&gt;Open SourceSafe Database-&amp;gt; add-&amp;gt;Next&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/11.gif" width="506" height="391" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/12.gif" width="503" height="391" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上一步输入你本机的ip地址，这里已127.0.0.1为例&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/13.gif" width="501" height="391" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;点击完成，进入下一步配置&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/14.gif" width="704" height="390" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/15.gif" width="404" height="416" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 上一步输入你本机的ip地址，这里已127.0.0.1为例&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/16.gif" width="820" height="142" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 选择yes 配置成功！&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意：vss2005 需要.NET2.0 如果你没有装，安装vss2005时将自动给你安装。配置完成后vss会自动在你的IIS默认网站中建立一个虚拟目录SourceSafe。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 要确保默认网站可以运行，才能保证vss的正常运行。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4.&amp;nbsp;配置客户端vss，现以vs2005为例&lt;br /&gt;&amp;nbsp;&amp;nbsp; 启动vs2005 工具&amp;#8212;&amp;#8212;&amp;gt;选项-&amp;gt;源代码管理&amp;#8212;&amp;#8212;&amp;gt;&amp;nbsp;选择internet&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/21.gif" width="641" height="358" /&gt;&lt;br /&gt;&amp;nbsp; 插件设置 &amp;#8212;&amp;#8212;&amp;gt;&amp;nbsp;高级&amp;#8212;&amp;#8212;&amp;gt;去掉勾选&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/22.gif" width="640" height="355" /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="line-height: 28px; font-family: 'Times New Roman'; font-size: 14pt" lang="EN-US"&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;&amp;nbsp;ok 客户端配置完毕&lt;br /&gt;&lt;v:stroke joinstyle="miter"&gt;&lt;/v:stroke&gt;&lt;v:formulas&gt;&lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 1 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum 0 0 @1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @2 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @3 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @0 0 1"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @6 1 2"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelWidth"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @8 21600 0"&gt;&lt;/v:f&gt;&lt;v:f eqn="prod @7 21600 pixelHeight"&gt;&lt;/v:f&gt;&lt;v:f eqn="sum @10 21600 0"&gt;&lt;/v:f&gt;&lt;/v:formulas&gt;&lt;v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"&gt;&lt;/v:path&gt;&lt;o:lock v:ext="edit" aspectratio="t"&gt;&lt;/o:lock&gt;&lt;/v:shapetype&gt;&lt;/span&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 现在新建一个项目来上传到vss&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/31.gif" width="325" height="217" /&gt;&lt;br /&gt;&amp;nbsp;点击add按钮&lt;br /&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/33.gif" width="506" height="390" /&gt;&lt;br /&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-image: initial" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kingboy/34.gif" width="326" height="288" /&gt;&lt;br /&gt;&lt;br /&gt;哈哈 之后就不用说了 终于完成了 感谢大森林（&lt;span style="line-height: 19px; font-family: 'Courier New'" face="Courier New"&gt;&lt;a style="color: rgb(8,125,168); text-decoration: none" href="http://blog.csdn.net/gooddasenlin/"&gt;http://blog.csdn.net/gooddasenlin/&lt;/a&gt;）对我的帮助！！&lt;br /&gt;&lt;/span&gt;开始工作了！！ 继续新项目的工作！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2467118.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/23/2467118.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/20/2459257.html</id><title type="text">Index Out of Bounds 错误解决方案</title><summary type="text">SQL Azure Migration Wizard v3.8.6, Index Out of Bounds http://sqlazuremw.codeplex.com/discussions/274112</summary><published>2012-04-20T06:14:00Z</published><updated>2012-04-20T06:14:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/20/2459257.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/20/2459257.html"/><content type="html">&lt;p&gt;&lt;a href="http://sqlazuremw.codeplex.com/"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;SQL Azure Migration Wizard v3.8.6, Index Out of Bounds&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlazuremw.codeplex.com/discussions/274112"&gt;http://sqlazuremw.codeplex.com/discussions/274112&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2459257.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/20/2459257.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/16/2452117.html</id><title type="text">Using the ReportViewer ASP.NET Control in Windows Azure</title><summary type="text">错误信息： Type Microsoft.Reporting.WebForms.SyncList is an invalid collection type since it does not have a default constructor. 解决办法： http://msdn.microsoft.com/en-us/library/windowsazure/hh825825%2...</summary><published>2012-04-16T09:58:00Z</published><updated>2012-04-16T09:58:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/16/2452117.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/16/2452117.html"/><content type="html">&lt;p&gt;错误信息：&lt;/p&gt;  &lt;p&gt;Type Microsoft.Reporting.WebForms.SyncList is an invalid collection type since it does not have a default constructor.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;解决办法：&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/windowsazure/hh825825%28v=vs.103%29.aspx" href="http://msdn.microsoft.com/en-us/library/windowsazure/hh825825%28v=vs.103%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/hh825825%28v=vs.103%29.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://social.msdn.microsoft.com/Forums/pl-PL/appfabricctp/thread/6ffe2f0a-c482-4514-9cf1-14685f0ecd3a" href="http://social.msdn.microsoft.com/Forums/pl-PL/appfabricctp/thread/6ffe2f0a-c482-4514-9cf1-14685f0ecd3a"&gt;http://social.msdn.microsoft.com/Forums/pl-PL/appfabricctp/thread/6ffe2f0a-c482-4514-9cf1-14685f0ecd3a&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2452117.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/16/2452117.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/10/2440263.html</id><title type="text">SSRS Links</title><summary type="text">Hide/Show Items Dependant On Export Format (SSRS) http://blog.hoegaerden.be/2011/01/18/ssrs-hideshow-items-dependant-on-export-format/ Disable Page Break when exporting to excel in SSRS 2008 R2 h...</summary><published>2012-04-10T03:40:00Z</published><updated>2012-04-10T03:40:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/10/2440263.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/10/2440263.html"/><content type="html">&lt;p&gt;&lt;strong&gt;Hide/Show Items Dependant On Export Format (SSRS)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blog.hoegaerden.be/2011/01/18/ssrs-hideshow-items-dependant-on-export-format/" href="http://blog.hoegaerden.be/2011/01/18/ssrs-hideshow-items-dependant-on-export-format/"&gt;http://blog.hoegaerden.be/2011/01/18/ssrs-hideshow-items-dependant-on-export-format/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disable Page Break when exporting to excel in SSRS 2008 R2&lt;/strong&gt;&lt;/p&gt; &lt;a title="http://beyondrelational.com/modules/2/blogs/115/posts/11163/disable-page-break-when-exporting-to-excel-in-ssrs-2008-r2.aspx" href="http://beyondrelational.com/modules/2/blogs/115/posts/11163/disable-page-break-when-exporting-to-excel-in-ssrs-2008-r2.aspx"&gt;http://beyondrelational.com/modules/2/blogs/115/posts/11163/disable-page-break-when-exporting-to-excel-in-ssrs-2008-r2.aspx&lt;/a&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2440263.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/10/2440263.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/09/2438620.html</id><title type="text">Visual Studio intellisense stopped working</title><summary type="text">devenv.exe /ResetSettingsdevenv /resetuserdataLink：http://stackoverflow.com/questions/178846/visual-studio-intellisense-stopped-working</summary><published>2012-04-09T03:13:00Z</published><updated>2012-04-09T03:13:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/09/2438620.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/09/2438620.html"/><content type="html">&lt;code&gt;devenv.exe /ResetSettings&lt;/code&gt;devenv /resetuserdataLink：&lt;a href="http://stackoverflow.com/questions/178846/visual-studio-intellisense-stopped-working"&gt;http://stackoverflow.com/questions/178846/visual-studio-intellisense-stopped-working&lt;/a&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2438620.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/09/2438620.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429672.html</id><title type="text">GMT vs. UTC</title><summary type="text">Greenwich Mean Time (GMT) Universal Time Coordinated(UTC) http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html http://geography.about.com/od/timeandtimezones/a/gmtutc.htm</summary><published>2012-04-02T02:04:00Z</published><updated>2012-04-02T02:04:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429672.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429672.html"/><content type="html">&lt;p&gt;Greenwich Mean Time (GMT)&lt;/p&gt;  &lt;p&gt;Universal Time Coordinated(UTC)&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html" href="http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html"&gt;http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://geography.about.com/od/timeandtimezones/a/gmtutc.htm" href="http://geography.about.com/od/timeandtimezones/a/gmtutc.htm"&gt;http://geography.about.com/od/timeandtimezones/a/gmtutc.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2429672.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429672.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429650.html</id><title type="text">Disabling Internet Explorer Enhanced Security Configuration</title><summary type="text">http://www.visualwin.com/IE-enhanced-security/ Looking for the Windows Server 2008 version of this tutorial? Click here. Preface: Windows Server 2003 shipped with security locked down by default. ...</summary><published>2012-04-02T01:40:00Z</published><updated>2012-04-02T01:40:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429650.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429650.html"/><content type="html">&lt;p&gt;&lt;a title="http://www.visualwin.com/IE-enhanced-security/" href="http://www.visualwin.com/IE-enhanced-security/"&gt;http://www.visualwin.com/IE-enhanced-security/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Looking for the Windows Server 2008 version of this tutorial? &lt;a href="http://www.visualwin.com/IE-Enhanced-Security-2008/"&gt;Click here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Preface:&lt;/p&gt;  &lt;p&gt;Windows Server 2003 shipped with security locked down by default.&amp;#160; Part of this locking down is Internet Explorer Enhanced Security which is an extra layer of protection when surfing the internet using Internet Explorer (more information can be found by going &lt;a href="res://shdoclc.dll/IESecHelp.htm#effects"&gt;here&lt;/a&gt; on a Windows Server 2003 [test] machine).&amp;#160; Some people want to uninstall it.&amp;#160; That's OK, Microsoft allows that, and that's what this will show you how to do.    &lt;br /&gt;Before we start, understand the way the uninstaller works.&amp;#160; You can uninstall the entire Configuration, or just for users, or just for Administrators.&amp;#160; The un-installer is set up like this:&lt;/p&gt;  &lt;p&gt;Enhanced Security   &lt;br /&gt;-&amp;gt;For Administrators    &lt;br /&gt;-&amp;gt;For Users&lt;/p&gt;  &lt;p&gt;If you have just random users connecting via Remote Desktop or Terminal Services, you may want to leave the Users configuration installed.&amp;#160; This tutorial will be removing all of it.&lt;/p&gt;  &lt;p&gt;Method:&lt;/p&gt;  &lt;p&gt;Click Start, put your mouse over Control Panel, and click Add/Remove Programs&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://www.visualwin.com/Common/start-menu-add-remove.png" width="655" height="509" /&gt;&lt;/p&gt;  &lt;p&gt;Now click Add/Remove Windows Components&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://www.visualwin.com/Common/click-add-remove-components.png" width="730" height="530" /&gt;&lt;/p&gt;  &lt;p&gt;After a few seconds a window will pop-up.&amp;#160; Click the check mark next to Internet Explorer Enhanced Security Configuration (to make it unchecked).&amp;#160; If you'd like to only disable it for Administrators or only for Users you can click Details and do so.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://www.visualwin.com/IE-enhanced-security/uncheck-ie-components.png" width="503" height="408" /&gt;&lt;/p&gt;  &lt;p&gt;Press Next, let it finish, and it's complete!&lt;/p&gt;  &lt;p&gt;Questions:&lt;/p&gt;  &lt;p&gt;Q: How do I know if it is enabled? &lt;/p&gt;  &lt;p&gt;A: When you open Internet Explorer up you will see this dialog&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://www.visualwin.com/IE-enhanced-security/hardening-enabled.png" width="512" height="194" /&gt;&lt;/p&gt;  &lt;p&gt;Q: How do I know if it's disabled?&lt;/p&gt;  &lt;p&gt;A: When you load up Internet Explorer Internet Explorer will tell you:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Caution:&lt;/b&gt; Internet Explorer Enhanced Security Configuration is not enabled&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.visualwin.com/"&gt;&amp;lt;-- Go back to the main tutorial page&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2429650.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/04/02/2429650.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/03/30/2425139.html</id><title type="text">ASP.NET MVC 4</title><summary type="text">This document describes the release of ASP.NET MVC 4 Beta for Visual Studio 2010. Installation Notes Documentation Support Software Requirements Upgrading an ASP.NET MVC 3 Project to A...</summary><published>2012-03-30T05:44:00Z</published><updated>2012-03-30T05:44:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/03/30/2425139.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/03/30/2425139.html"/><content type="html">&lt;p&gt;This document describes the release of ASP.NET MVC 4 Beta for Visual Studio 2010.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253802"&gt;Installation Notes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253803"&gt;Documentation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253804"&gt;Support&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253805"&gt;Software Requirements&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806"&gt;Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253807"&gt;New Features in ASP.NET MVC 4 Beta&lt;/a&gt;      &lt;ul&gt;       &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc317096197"&gt;ASP.NET Web API&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc317096198"&gt;ASP.NET Single Page Application&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253808"&gt;Enhancements to Default Project Templates&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253809"&gt;Mobile Project Template&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253810"&gt;Display Modes&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253811"&gt;jQuery Mobile, the View Switcher, and Browser Overriding&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253812"&gt;Recipes for Code Generation in Visual Studio&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253813"&gt;Task Support for Asynchronous Controllers&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253814"&gt;Azure SDK&lt;/a&gt;&lt;/li&gt;        &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253815"&gt;Known Issues and Breaking Changes&lt;/a&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253816"&gt;Disclaimer&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2425139.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/03/30/2425139.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422786.html</id><title type="text">web.config 中SessionState的配置 [转]</title><summary type="text">一 http://hi.baidu.com/zyb512/blog/item/28ed858b3b88c015c9fc7af9.html web Form 网页是基于HTTP的，它们没有状态， 这意味着它们不知道所有的请求是否来自 同一台客户端计算机，网页是受到了破坏，以及是否得到了刷新，这样就可能造成信息的 丢失。 于是， 状态管理就成了开发网络应用程序的一个实实在在的问题。 ...</summary><published>2012-03-29T01:42:00Z</published><updated>2012-03-29T01:42:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422786.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422786.html"/><content type="html">&lt;p&gt;一 &lt;a href="http://hi.baidu.com/zyb512/blog/item/28ed858b3b88c015c9fc7af9.html"&gt;http://hi.baidu.com/zyb512/blog/item/28ed858b3b88c015c9fc7af9.html&lt;/a&gt;    &lt;br /&gt;web Form 网页是基于HTTP的，它们没有状态， 这意味着它们不知道所有的请求是否来自    &lt;br /&gt;同一台客户端计算机，网页是受到了破坏，以及是否得到了刷新，这样就可能造成信息的    &lt;br /&gt;丢失。 于是， 状态管理就成了开发网络应用程序的一个实实在在的问题。    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; 在ASP中能够通过Cookie 、查询字符串、 应用程序、会话(Session) 等轻易解决这些问题。    &lt;br /&gt;现在在ASP.NET环境中，我们依然可以使用这些功能，并且功能更加强大。    &lt;br /&gt;状态管理分为服务端和客户端两种情况， 这里只是介绍 服务端状态管理： &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 与Application对象不同的是， ASP.NET 的Session对象可以在IIS服务器或者工作进程重新启动时   &lt;br /&gt;恢复启动前的状态而不丢失其中的数据。这是因为存储在Session中的所以信息都缺省的存储在    &lt;br /&gt;一个作为Windows服务运行的状态服务器进程中。状态可以被序列化并以二进制形式保存在内存中。    &lt;br /&gt;程序员可以悬着使用Microsoft Sql server数据库来存储数据。&lt;/p&gt;  &lt;p&gt;状态服务器服务和状态信息可以和web应用程序一起存在于同一台服务器上，也可以保存到外部的   &lt;br /&gt;状态服务器上。 为了指定如何存储信息，程序员可以在web.config文件中编写适当的配置。&lt;/p&gt;  &lt;p&gt;ASP.NET会话状态模块在Web.config文件中&amp;lt;System.web&amp;gt;标记下的&amp;lt;Sessionstate&amp;gt;标记的mode属性来决定   &lt;br /&gt;该属性的四种可能的值： Off、 Inproc StateServer 和SQLserver。    &lt;br /&gt;&lt;strong&gt;1 Inproc是缺省的设置&lt;/strong&gt;    &lt;br /&gt;它允许“无Cookie”的会话，以及在服务器之外存储    &lt;br /&gt;会话数据。ASP.NET会话状态模块在Web.config文件中像下面这样配置：&lt;/p&gt;  &lt;p&gt;&amp;lt;sessionState mode=&amp;quot;InProc&amp;quot; cookieless=&amp;quot;false&amp;quot; timeout=&amp;quot;20&amp;quot; /&amp;gt;&lt;/p&gt;  &lt;p&gt;在这个例子中，mode属性设为InProc（默认值），表明会话状态要由ASP.NET存储到内存中，而且   &lt;br /&gt;不用Cookie来传递会话ID。相反，会话ID要直接插入一个网页URL的查询字符串中。例如，采用    &lt;br /&gt;InProc模式并建立一个会话之后，调用一个假想的ASP.NET网页时，需要采用下面这样的URL：&lt;/p&gt;  &lt;p&gt;http://my.website.com/(12mfju55vgblubjlwsi4dgjq)/education.aspx&lt;/p&gt;  &lt;p&gt;圆括号中长长的字母、数字字符串就是会话ID。ASP.NET引擎从查询字符中提取会话ID，并将用户   &lt;br /&gt;请求与特定会话联系起来。采取这种方式，不管Cookie还是隐藏表单字段都用不着了。    &lt;br /&gt;所以，即使网页中没有使用表单，也能加入会话。&lt;/p&gt;  &lt;p&gt;但是这种方法，应用程序的状态将依赖于 ASP.NET进程， 当IIS进程崩溃或者正常重启时，保存在   &lt;br /&gt;进程中的状态将丢失。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2 mode属性设为Off&lt;/strong&gt;    &lt;br /&gt;&amp;#160;&amp;#160; 和从前的ASP一样，ASP.NET的会话状态管理是要产生开销的。所以，假如某个网页不需要访问    &lt;br /&gt;Session对象，开发者应将那个页的Page预编译指令的EnableSessionState属性设为False。    &lt;br /&gt;要为整个网站禁用会话状态，可在Web.config文件中将sessionState元素的mode属性设为Off。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; 为了克服inproc 模式的缺点， ASP.NET 提供了两种进程外保存会话状态的方法。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3 StateServer会话管理&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;将mode属性设为StateServer，也就是将会话数据存储到单独的内存缓冲区中，再由单独一台机器上运行&lt;/p&gt;  &lt;p&gt;的Windows服务来控制这个缓冲区。状态服务全称是“ASP.NET State Service ”（aspnet_state.exe），&lt;/p&gt;  &lt;p&gt;它由Web.config文件中的stateConnectionString属性来配置。该属性指定了服务所在的服务器，以及要监&lt;/p&gt;  &lt;p&gt;视的端口：   &lt;br /&gt;&amp;lt;sessionState mode=&amp;quot;StateServer&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; stateConnectionString=&amp;quot;tcpip=myserver:42424&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; cookieless=&amp;quot;false&amp;quot; timeout=&amp;quot;20&amp;quot; /&amp;gt;    &lt;br /&gt;在这个例子中，状态服务在一台名为myserver的机器的42424端口（默认端口）运行。要在服务器上改变&lt;/p&gt;  &lt;p&gt;端口，可编辑HKLM\SYSTEM\CurrentControlSet\Services\aspnet_state注册表项中的Port值。   &lt;br /&gt;显然，使用状态服务的优点在于进程隔离，并可在Web farm中共享。 使用这种模式，会话状态的存储将不&lt;/p&gt;  &lt;p&gt;依赖于iis进程的失败或者重启，然而，一旦状态服务中止，所有会话数据都会丢失。换言之，状态服务不&lt;/p&gt;  &lt;p&gt;像SQL Server那样能持久存储数据；它只是将数据存储在内存中。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4 用SQL Server进行会话管理&lt;/strong&gt;    &lt;br /&gt;&amp;#160;&amp;#160; ASP.NET还允许将会话数据存储到一个数据库服务器中，方法是将mode属性变成SqlServer。     &lt;br /&gt;在这种情况下，ASP.NET尝试将会话数据存储到由sqlConnectionString属性（其中包含数据源以及登录服&lt;/p&gt;  &lt;p&gt;务器所需的安全凭证）指定的SQL Server中。   &lt;br /&gt;为了用恰当的数据库对象来配置SQL erver，管理员还需要创建ASPState数据库，    &lt;br /&gt;方法是运行WinDir\Microsoft.Net\Framework\Version文件夹中的InstallState.sql脚本（WinDir是服务&lt;/p&gt;  &lt;p&gt;器的Windows文件夹，而Version是你使用的.NET框架版本的安装文件夹）。   &lt;br /&gt;要配置SQL服务器，可以在命令行中运行SQL Server 提供的命令行工具osql.exe&lt;/p&gt;  &lt;p&gt;osql -S [ server name] -U [user] -P [password] &amp;lt;InstallSqlState.sql   &lt;br /&gt;例如    &lt;br /&gt;osql -S (local)\NetSDK -U sa -P &amp;quot;&amp;quot; -i InstallSqlState.sql&lt;/p&gt;  &lt;p&gt;在这里用户名必须是SQL服务器上的sa帐号，或者具有同等权限的其他帐号。有兴趣的读者可以打开   &lt;br /&gt;这个脚本文件来了解ASP.NET是如何和SQL Server配合实现状态管理的。    &lt;br /&gt;&amp;#160;&amp;#160; 卸载这些表和存储过程，可以使用UninstallSqlState.sql脚本，使用方法与上面类似。&lt;/p&gt;  &lt;p&gt;做好必要的数据库准备工作后，将web.config 文件中的sessionstate 元素的mode改为&amp;quot;sqlserver&amp;quot;   &lt;br /&gt;,并且指定SQL连接字符串。具体如下：&lt;/p&gt;  &lt;p&gt;mode=&amp;quot;sqlserver&amp;quot;   &lt;br /&gt;sqlConnectionString=&amp;quot;data source=127.0.0.1; userid=sa; password=&amp;quot;&lt;/p&gt;  &lt;p&gt;配置好SQL Server后，应用程序代码运行时就和InProc模式没有什么区别。但要注意的是，由于数据不存&lt;/p&gt;  &lt;p&gt;储在本地内存，所以存储会话状态的对象需要进行序列化和反序列化，以便通过网络传给数据库服务器，&lt;/p&gt;  &lt;p&gt;以及从数据库服务器传回。这当然会影响性能。通过在数据库中存储会话状态，可分别针对扩展性及可靠&lt;/p&gt;  &lt;p&gt;性来有效地平衡性能。另外，可以利用SQL Server的集群，使状态存储不依赖于单个的SQL Server，    &lt;br /&gt;这样就可以为应用程序提供极大限度的可靠性。&lt;/p&gt;  &lt;p&gt;&lt;a href="http://hi.baidu.com/zyb512/blog/item/28ed858b3b88c015c9fc7af9.html"&gt;     &lt;br /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;二 &lt;a href="http://blog.csdn.net/beer888/archive/2007/11/10/1878349.aspx"&gt;http://blog.csdn.net/beer888/archive/2007/11/10/1878349.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;关于c# 删除文件夹时SESSION丢失问题解决办法&lt;/p&gt;  &lt;p&gt;1、在WEB.CONFIG文件中修改SESSION状态保存模式，如：&amp;lt;sessionState mode='StateServer' cookieless='false' timeout='20'/&amp;gt;&lt;/p&gt;  &lt;p&gt;2、启动系统服务“ASP.NET状态服务 ”，系统默认是手动启动的&lt;/p&gt;  &lt;p&gt;3、如果SESSION中保存的数据类型是自定义的，如结构，请在自定义数据类型处序列化会话状态，即在类或结构申明前加[Serializable]&lt;/p&gt;  &lt;p&gt;完成以上3部，状态即可保存，但是在访问页面是浏览器显示的路径中增加了一段字符，如：(S(lto3j0eg25cztmqtxevm5tb4))&lt;/p&gt;  &lt;p&gt;三web.config1 &lt;a href="http://blog.sina.com.cn/s/blog_4933eca3010009pb.html"&gt;http://blog.sina.com.cn/s/blog_4933eca3010009pb.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;四web.config2 &lt;a href="http://www.leadbbs.com/MINI/Default.asp?205-2524231-0-0-0-0-0-a-.htm"&gt;http://www.leadbbs.com/MINI/Default.asp?205-2524231-0-0-0-0-0-a-.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2422786.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422786.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422784.html</id><title type="text">Web.config详解 [转]</title><summary type="text">一、认识Web.config文件 Web.config 文件是一个XML文本文件，它用来储存 ASP.NET Web 应用程序的配置信息（如最常用的设置ASP.NET Web 应用程序的身份验证方式），它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后，默认情况下会在根目录自动创建一个默认的 Web.config文件，包括默认的配置设置，所有的子目录都继承它的配置设置...</summary><published>2012-03-29T01:41:00Z</published><updated>2012-03-29T01:41:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422784.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422784.html"/><content type="html">&lt;p&gt;一、认识Web.config文件   &lt;br /&gt;Web.config 文件是一个XML文本文件，它用来储存 ASP.NET Web 应用程序的配置信息（如最常用的设置ASP.NET Web 应用程序的身份验证方式），它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后，默认情况下会在根目录自动创建一个默认的 Web.config文件，包括默认的配置设置，所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置，你可以在该子目录下新建一个 Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息，也可以重写或修改父目录中定义的设置。    &lt;br /&gt;(一).Web.Config是以XML文件规范存储,配置文件分为以下格式    &lt;br /&gt;1.配置节处理程序声明    &lt;br /&gt;特点：位于配置文件的顶部，包含在&amp;lt;configSections&amp;gt;标志中。    &lt;br /&gt;2.特定应用程序配置    &lt;br /&gt;特点: 位于&amp;lt;appSetting&amp;gt;中。可以定义应用程序的全局常量设置等信息.    &lt;br /&gt;3.配置节设置    &lt;br /&gt;特点: 位于&amp;lt;system.Web&amp;gt;节中，控制Asp.net运行时的行为.    &lt;br /&gt;4.配置节组    &lt;br /&gt;特点: 用&amp;lt;sectionGroup&amp;gt;标记，可以自定义分组，可以放到&amp;lt;configSections&amp;gt;内部或其它&amp;lt;sectionGroup&amp;gt;标记的内部.    &lt;br /&gt;(二).配置节的每一节    &lt;br /&gt;1.&amp;lt;configuration&amp;gt;节    &lt;br /&gt;根元素，其它节都是在它的内部.    &lt;br /&gt;2.&amp;lt;appSetting&amp;gt;节    &lt;br /&gt;此节用于定义应用程序设置项。对一些不确定设置，还可以让用户根据自己实际情况自己设置    &lt;br /&gt;用法:    &lt;br /&gt;I.    &lt;br /&gt;&amp;lt;appSettings&amp;gt;    &lt;br /&gt;&amp;lt;add key=&amp;quot;Conntction&amp;quot; value=&amp;quot;server=192.168.85.66;userid=sa;password=;database=Info;&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;appSettings&amp;gt;    &lt;br /&gt;定义了一个连接字符串常量，并且在实际应用时可以修改连接字符串，不用修改程式代码.    &lt;br /&gt;II.&amp;lt;appSettings&amp;gt;    &lt;br /&gt;&amp;lt;add key=&amp;quot;ErrPage&amp;quot; value=&amp;quot;Error.aspx&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;appSettings&amp;gt;    &lt;br /&gt;定义了一个错误重定向页面.    &lt;br /&gt;3.&amp;lt;compilation&amp;gt;节    &lt;br /&gt;格式:    &lt;br /&gt;&amp;lt;compilation    &lt;br /&gt;defaultLanguage=&amp;quot;c#&amp;quot;    &lt;br /&gt;debug=&amp;quot;true&amp;quot;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt;I.default language: 定义后台代码语言,可以选择C#和VB.net两种语言.    &lt;br /&gt;II&lt;strong&gt;debug&lt;/strong&gt; : 为true时，启动aspx调试；为false不启动aspx调试，因而可以提高应用程序运行    &lt;br /&gt;时的性能。一般程序员在开发时设置为true,交给客户时设置为false.    &lt;br /&gt;4.&amp;lt;customErrors&amp;gt;节    &lt;br /&gt;格式:    &lt;br /&gt;&amp;lt;customErrors    &lt;br /&gt;mode=&amp;quot;RemoteOnly&amp;quot;    &lt;br /&gt;defaultRedirect=&amp;quot;error.aspx&amp;quot;    &lt;br /&gt;&amp;lt;error statusCode=&amp;quot;440&amp;quot; redirect=&amp;quot;err440page.aspx&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;error statusCode=&amp;quot;500&amp;quot; redirect=&amp;quot;err500Page.aspx&amp;quot;/&amp;gt;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt;I.&lt;strong&gt;mode&lt;/strong&gt; : 具有On,Off,RemoteOnly 3种状态。On表示始终显示自定义的信息; Off表示始终显示详细的asp.net错误信息; RemoteOnly表示只对不在本地Web服务器上运行的用户显示自定义信息.    &lt;br /&gt;II.&lt;strong&gt;defaultRedirect&lt;/strong&gt;: 用于出现错误时重定向的URL地址. 是可选的    &lt;br /&gt;III.statusCode: 指明错误状态码，表明一种特定的出错状态.    &lt;br /&gt;IV. redirect:错误重定向的URL.    &lt;br /&gt;5.&amp;lt;globalization&amp;gt;节    &lt;br /&gt;格式:    &lt;br /&gt;&amp;lt;globalization    &lt;br /&gt;requestEncoding=&amp;quot;utf-8&amp;quot;    &lt;br /&gt;responseEncoding=&amp;quot;utf-8&amp;quot;    &lt;br /&gt;fileEncoding=&amp;quot;utf-8&amp;quot;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt;I.requestEncoding: 它用来检查每一个发来请求的编码.    &lt;br /&gt;II.responseEncoding: 用于检查发回的响应内容编码.    &lt;br /&gt;III.fileEncoding: 用于检查aspx,asax等文件解析的默认编码.    &lt;br /&gt;6.&amp;lt;sessionState&amp;gt;节    &lt;br /&gt;格式:    &lt;br /&gt;&amp;lt;sessionState    &lt;br /&gt;mode=&amp;quot;InProc&amp;quot;    &lt;br /&gt;stateConnectionString=&amp;quot;tcpip=127.0.0.1:42424&amp;quot;    &lt;br /&gt;sqlConnectionString=&amp;quot;data source=127.0.0.1;Trusted_Connection=yes&amp;quot;    &lt;br /&gt;cookieless=&amp;quot;false&amp;quot;    &lt;br /&gt;timeout=&amp;quot;20&amp;quot;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt;I.mode: 分为off,Inproc,StateServer,SqlServer几种状态    &lt;br /&gt;（见下一篇：ASP.Net性能优化）    &lt;br /&gt;II. stateConnectionString :指定Asp.net应用程序存储远程会话状态的服务器名，默认为本机    &lt;br /&gt;III.sqlConnectionString: 当用会话状态数据库时，在这里设置连接字符串    &lt;br /&gt;IV. Cookieless: 设置为true时，表示不使用cookie会话状态来标识客户；否则，相反.    &lt;br /&gt;V. TimeOut: 用来定义会话状态存储的时间，超过期限，将自动终止会话.    &lt;br /&gt;7.&amp;lt;authentication&amp;gt;节    &lt;br /&gt;格式:    &lt;br /&gt;&amp;lt;authentication mode=&amp;quot;Forms&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;forms name=&amp;quot;.ASPXUSERDEMO&amp;quot; loginUrl=&amp;quot;Login.aspx&amp;quot; protection=&amp;quot;All&amp;quot; timeout=&amp;quot;30&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;/authentication&amp;gt;    &lt;br /&gt;&amp;lt;authorization&amp;gt;    &lt;br /&gt;&amp;lt;deny users=&amp;quot;?&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;/authorization&amp;gt;    &lt;br /&gt;I.Windows: 使用IIS验证方式    &lt;br /&gt;II.Forms: 使用基于窗体的验证方式    &lt;br /&gt;III.Passport: 采用Passport cookie验证模式    &lt;br /&gt;IV.None: 不采用任何验证方式    &lt;br /&gt;里面内嵌Forms节点的属性涵义:    &lt;br /&gt;I.Name: 指定完成身份验证的Http cookie的名称.    &lt;br /&gt;II.LoginUrl: 如果未通过验证或超时后重定向的页面URL，一般为登录页面，让用户重新登录    &lt;br /&gt;III.&lt;strong&gt;Protection&lt;/strong&gt;: &lt;strong&gt;指定 cookie数据的保护方式&lt;/strong&gt;.    &lt;br /&gt;可设置为: All None Encryption Validation四种保护方式    &lt;br /&gt;a. All表示加密数据，并进行有效性验证两种方式    &lt;br /&gt;b. None表示不保护Cookie.    &lt;br /&gt;c. Encryption表示对Cookie内容进行加密    &lt;br /&gt;d. validation表示对Cookie内容进行有效性验证    &lt;br /&gt;IV. TimeOut: 指定Cookie的失效时间. 超时后要重新登录.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;在运行时对Web.config文件的修改不需要重启服务就可以生效（注：&amp;lt;processModel&amp;gt; 节例外）。&lt;/strong&gt;当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。&lt;/p&gt;  &lt;p&gt;web.config配置文件（默认的配置设置）以下所有的代码都应该位于   &lt;br /&gt;&amp;lt;configuration&amp;gt;    &lt;br /&gt;&amp;lt;system.web&amp;gt;    &lt;br /&gt;和    &lt;br /&gt;&amp;lt;/system.web&amp;gt;    &lt;br /&gt;&amp;lt;/configuration&amp;gt;    &lt;br /&gt;之间，出于学习的目的下面的示例都省略了这段XML标记。&lt;/p&gt;  &lt;p&gt;1、&amp;lt;authentication&amp;gt; 节   &lt;br /&gt;作用：配置 ASP.NET 身份验证支持（为Windows、Forms、PassPort、None四种）。该元素只能在计算机、站点或应用程序级别声明&lt;strong&gt;。&amp;lt; authentication&amp;gt; 元素必需与&amp;lt;authorization&amp;gt; 节配合使用。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;示例：&lt;/p&gt;  &lt;p&gt;以下示例为基于窗体（Forms）的身份验证配置站点，当没有登陆的用户访问需要身份验证的网页，网页自动跳转到登陆网页。   &lt;br /&gt;&amp;lt;authentication mode=&amp;quot;Forms&amp;quot; &amp;gt;    &lt;br /&gt;&amp;lt;forms loginUrl=&amp;quot;logon.aspx&amp;quot; name=&amp;quot;.FormsAuthCookie&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;/authentication&amp;gt;    &lt;br /&gt;其中元素loginUrl表示登陆网页的名称，name表示Cookie名称。&lt;/p&gt;  &lt;p&gt;2、&amp;lt;authorization&amp;gt; 节   &lt;br /&gt;&lt;strong&gt;作用：控制对 URL 资源的客户端访问（如允许匿名用户访问）。此元素可以在任何级别（计算机、站点、应用程序、子目录或页）上声明。必需与&amp;lt;authentication&amp;gt; 节配合使用。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;示例：&lt;u&gt;以下示例禁止匿名用户的访问     &lt;br /&gt;&lt;/u&gt;&amp;lt;authorization&amp;gt;    &lt;br /&gt;&amp;lt;deny users=&amp;quot;?&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;/authorization&amp;gt;    &lt;br /&gt;注：你可以使用user.identity.name来获取已经过验证的当前的用户名；可以使用web.Security.FormsAuthentication.RedirectFromLoginPage方法将已验证的用户重定向到用户刚才请求的页面.具体的&lt;/p&gt;  &lt;p&gt;3、&amp;lt;compilation&amp;gt;节   &lt;br /&gt;作用：配置 ASP.NET 使用的所有编译设置。默认的debug属性为“True”.在程序编译完成交付使用之后应将其设为False（Web.config文件中有详细说明，此处省略示例）&lt;/p&gt;  &lt;p&gt;4、&amp;lt;customErrors&amp;gt;   &lt;br /&gt;作用：为 ASP.NET 应用程序提供有关自定义错误信息的信息。它不适用于 XML Web services 中发生的错误。&lt;/p&gt;  &lt;p&gt;示例：当发生错误时，将网页跳转到自定义的错误页面。   &lt;br /&gt;&amp;lt;customErrors defaultRedirect=&amp;quot;ErrorPage.aspx&amp;quot; mode=&amp;quot;RemoteOnly&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;/customErrors&amp;gt;    &lt;br /&gt;其中元素defaultRedirect表示自定义的错误网页的名称。mode元素表示：对不在本地 Web 服务器上运行的用户显示自定义(友好的)信息。&lt;/p&gt;  &lt;p&gt;5、&amp;lt;httpRuntime&amp;gt;节   &lt;br /&gt;作用：配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。&lt;/p&gt;  &lt;p&gt;示例：控制用户上传文件最大为4M，最长时间为60秒，最多请求数为100   &lt;br /&gt;&amp;lt;httpRuntime maxRequestLength=&amp;quot;4096&amp;quot; executionTimeout=&amp;quot;60&amp;quot; appRequestQueueLimit=&amp;quot;100&amp;quot;/&amp;gt;&lt;/p&gt;  &lt;p&gt;6、 &amp;lt;pages&amp;gt;   &lt;br /&gt;作用：标识特定于页的配置设置（如是否启用会话状态、视图状态，是否检测用户的输入等）。&amp;lt;pages&amp;gt;可以在计算机、站点、应用程序和子目录级别声明。&lt;/p&gt;  &lt;p&gt;示例：不检测用户在浏览器输入的内容中是否存在潜在的危险数据（注：该项默认是检测，如果你使用了不检测，一要对用户的输入进行编码或验证)，在从客户端回发页时将检查加密的视图状态，以验证视图状态是否已在客户端被篡改。(注：该项默认是不验证）   &lt;br /&gt;&amp;lt;pages buffer=&amp;quot;true&amp;quot; enableViewStateMac=&amp;quot;true&amp;quot; validateRequest=&amp;quot;false&amp;quot;/&amp;gt;&lt;/p&gt;  &lt;p&gt;7、&amp;lt;sessionState&amp;gt;   &lt;br /&gt;作用：为当前应用程序配置会话状态设置（如设置是否启用会话状态，会话状态保存位置）。&lt;/p&gt;  &lt;p&gt;示例：   &lt;br /&gt;&amp;lt;sessionState mode=&amp;quot;InProc&amp;quot; cookieless=&amp;quot;true&amp;quot; timeout=&amp;quot;20&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;/sessionState&amp;gt;    &lt;br /&gt;注：    &lt;br /&gt;mode=&amp;quot;InProc&amp;quot;表示：在本地储存会话状态（你也可以选择储存在远程服务器或SAL服务器中或不启用会话状态）    &lt;br /&gt;cookieless=&amp;quot;true&amp;quot;表示：如果用户浏览器不支持Cookie时启用会话状态(默认为False）    &lt;br /&gt;timeout=&amp;quot;20&amp;quot;表示：会话可以处于空闲状态的分钟数&lt;/p&gt;  &lt;p&gt;8、&amp;lt;trace&amp;gt;   &lt;br /&gt;作用：配置 ASP.NET 跟踪服务，主要用来程序测试判断哪里出错。&lt;/p&gt;  &lt;p&gt;示例：以下为Web.config中的默认配置：   &lt;br /&gt;&amp;lt;trace enabled=&amp;quot;false&amp;quot; requestLimit=&amp;quot;10&amp;quot; pageOutput=&amp;quot;false&amp;quot; traceMode=&amp;quot;SortByTime&amp;quot; localOnly=&amp;quot;true&amp;quot; /&amp;gt;    &lt;br /&gt;注：    &lt;br /&gt;enabled=&amp;quot;false&amp;quot;表示不启用跟踪；    &lt;br /&gt;requestLimit=&amp;quot;10&amp;quot;表示指定在服务器上存储的跟踪请求的数目    &lt;br /&gt;pageOutput=&amp;quot;false&amp;quot;表示只能通过跟踪实用工具访问跟踪输出；    &lt;br /&gt;traceMode=&amp;quot;SortByTime&amp;quot;表示以处理跟踪的顺序来显示跟踪信息    &lt;br /&gt;localOnly=&amp;quot;true&amp;quot; 表示跟踪查看器 (trace.axd) 只用于宿主 Web 服务器&lt;/p&gt;  &lt;p&gt;自定义Web.config文件配置&lt;/p&gt;  &lt;p&gt;自定义Web.config文件配置节过程分为两步。   &lt;br /&gt;1.在在配置文件顶部 &amp;lt;configSections&amp;gt; 和 &amp;lt;/configSections&amp;gt;标记之间声明配置节的名称和处理该节中配置数据的 .NET Framework 类的名称。    &lt;br /&gt;2.是在 &amp;lt;configSections&amp;gt; 区域之后为声明的节做实际的配置设置。&lt;/p&gt;  &lt;p&gt;示例：创建一个节存储数据库连接字符串   &lt;br /&gt;&amp;lt;configuration&amp;gt;    &lt;br /&gt; &amp;lt;configSections&amp;gt;    &lt;br /&gt; &amp;lt;section name=&amp;quot;appSettings&amp;quot; type=&amp;quot;System.Configuration.NameValueFileSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;/&amp;gt;    &lt;br /&gt;&amp;lt;/configSections&amp;gt;    &lt;br /&gt; &amp;lt;appSettings&amp;gt;    &lt;br /&gt; &amp;lt;add key=&amp;quot;scon&amp;quot; value=&amp;quot;server=a;database=northwind;uid=sa;pwd=123&amp;quot;/&amp;gt;    &lt;br /&gt; &amp;lt;/appSettings&amp;gt;    &lt;br /&gt; &amp;lt;system.web&amp;gt;    &lt;br /&gt; ......    &lt;br /&gt; &amp;lt;/system.web&amp;gt;    &lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;/p&gt;  &lt;p&gt;访问Web.config文件你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例：获取上面例子中建立的连接字符串。例如：   &lt;br /&gt;protected static string Isdebug = ConfigurationSettings.AppSettings[&amp;quot;debug&amp;quot;]&lt;/p&gt;  &lt;p&gt;二、web.config中的session配置详解   &lt;br /&gt;打开某个应用程序的配置文件Web.config后，我们会发现以下这段：    &lt;br /&gt;&amp;lt; sessionState    &lt;br /&gt; mode=&amp;quot;InProc&amp;quot;    &lt;br /&gt; stateConnectionString=&amp;quot;tcpip=127.0.0.1:42424&amp;quot;    &lt;br /&gt; sqlConnectionString=&amp;quot;data source=127.0.0.1;Trusted_Connection=yes&amp;quot;    &lt;br /&gt; cookieless=&amp;quot;false&amp;quot;    &lt;br /&gt; timeout=&amp;quot;20&amp;quot;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt; 这一段就是配置应用程序是如何存储Session信息的了。我们以下的各种操作主要是针对这一段配置展开。让我们先看看这一段配置中所包含的内容的意思。sessionState节点的语法是这样的：    &lt;br /&gt;&amp;lt; sessionState mode=&amp;quot;Off|InProc|StateServer|SQLServer&amp;quot;    &lt;br /&gt;cookieless=&amp;quot;true|false&amp;quot;    &lt;br /&gt;timeout=&amp;quot;number of minutes&amp;quot;    &lt;br /&gt;stateConnectionString=&amp;quot;tcpip=server:port&amp;quot;    &lt;br /&gt;sqlConnectionString=&amp;quot;sql connection string&amp;quot;    &lt;br /&gt;stateNetworkTimeout=&amp;quot;number of seconds&amp;quot;    &lt;br /&gt;/&amp;gt;&lt;/p&gt;  &lt;p&gt;必须有的属性是 属性 选项 描述   &lt;br /&gt;mode 设置将Session信息存储到哪里    &lt;br /&gt;?nbsp;&amp;#160; Off 设置为不使用Session功能，    &lt;br /&gt;?nbsp;&amp;#160; InProc 设置为将Session存储在进程内，就是ASP中的存储方式，这是默认值，    &lt;br /&gt;?nbsp;&amp;#160; StateServer 设置为将Session存储在独立的状态服务中，    &lt;br /&gt;?nbsp;&amp;#160; SQLServer 设置将Session存储在SQL Server中。&lt;/p&gt;  &lt;p&gt;可选的属性是： 属性 选项 描述   &lt;br /&gt;?nbsp;&amp;#160; cookieless 设置客户端的Session信息存储到哪里，    &lt;br /&gt;?nbsp;&amp;#160; ture 使用Cookieless模式，    &lt;br /&gt;?nbsp;&amp;#160; false 使用Cookie模式，这是默认值，    &lt;br /&gt;?nbsp;&amp;#160; timeout 设置经过多少分钟后服务器自动放弃Session信息，默认为20分钟。    &lt;br /&gt;stateConnectionString 设置将Session信息存储在状态服务中时使用的服务器名称和端口号，例如：&amp;quot;tcpip=127.0.0.1:42424”。当mode的值是StateServer是，这个属性是必需的。    &lt;br /&gt;sqlConnectionString 设置与SQL Server连接时的连接字符串。例如&amp;quot;data source= localhost;Integrated Security=SSPI;Initial Catalog=northwind&amp;quot;。当mode的值是 SQLServer时，这个属性是必需的。    &lt;br /&gt;stateNetworkTimeout 设置当使用StateServer模式存储Session状态时，经过多少秒空闲后，断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟。&lt;/p&gt;  &lt;p&gt;ASP.NET中客户端Session状态的存储   &lt;br /&gt; 在我们上面的Session模型简介中，大家可以发现Session状态应该存储在两个地方，分别是客户端和服务器端。客户端只负责保存相应网站的 SessionID，而其他的Session信息则保存在服务器端。在ASP中，客户端的SessionID实际是以Cookie的形式存储的。如果用户在浏览器的设置中选择了禁用Cookie，那末他也就无法享受Session的便利之处了，甚至造成不能访问某些网站。为了解决以上问题，在 ASP.NET中客户端的Session信息存储方式分为：Cookie和Cookieless两种。    &lt;br /&gt; ASP.NET中，默认状态下，在客户端还是使用Cookie存储Session信息的。如果我们想在客户端使用Cookieless的方式存储Session信息的方法如下：    &lt;br /&gt; 找到当前Web应用程序的根目录，打开Web.Config文件，找到如下段落：    &lt;br /&gt;&amp;lt; sessionState    &lt;br /&gt; mode=&amp;quot;InProc&amp;quot;    &lt;br /&gt; stateConnectionString=&amp;quot;tcpip=127.0.0.1:42424&amp;quot;    &lt;br /&gt; sqlConnectionString=&amp;quot;data source=127.0.0.1;Trusted_Connection=yes&amp;quot;    &lt;br /&gt; cookieless=&amp;quot;false&amp;quot;    &lt;br /&gt; timeout=&amp;quot;20&amp;quot;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt; 这段话中的cookieless=&amp;quot;false&amp;quot;改为：cookieless=&amp;quot;true&amp;quot;，这样，客户端的Session信息就不再使用 Cookie存储了，而是将其通过URL存储。关闭当前的IE，打开一个新IE，重新访问刚才的Web应用程序，就会看到类似下面的样子：    &lt;br /&gt;其中，http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245) /default.aspx中黑体标出的就是客户端的Session ID。注意，这段信息是由IIS自动加上的，不会影响以前正常的连接。&lt;/p&gt;  &lt;p&gt;ASP.NET中服务器端Session状态的存储准备工作：   &lt;br /&gt; 为了您能更好的体验到实验现象，您可以建立一个叫做SessionState.aspx的页面，然后把以下这些代码添加到&amp;lt; body&amp;gt;&amp;lt; /body&amp;gt;中。    &lt;br /&gt;&amp;lt; scriptrunat=&amp;quot;server&amp;quot;&amp;gt;    &lt;br /&gt;Sub Session_Add(sender As Object, e As EventArgs)    &lt;br /&gt; Session(&amp;quot;MySession&amp;quot;) = text1.Value    &lt;br /&gt; span1.InnerHtml = &amp;quot;Session data updated! &amp;lt; P&amp;gt;Your session contains: &amp;lt; font color=red&amp;gt;&amp;quot; &amp;amp; Session(&amp;quot;MySession&amp;quot;). ToString() &amp;amp; &amp;quot;&amp;lt; /font&amp;gt;&amp;quot;    &lt;br /&gt;End Sub    &lt;br /&gt;Sub CheckSession(sender As Object, eAs EventArgs)    &lt;br /&gt; If (Session(&amp;quot;MySession&amp;quot;)Is Nothing) Then    &lt;br /&gt; span1.InnerHtml = &amp;quot;NOTHING, SESSION DATA LOST!&amp;quot;    &lt;br /&gt; Else    &lt;br /&gt; span1.InnerHtml = &amp;quot;Your session contains: &amp;lt; font color= red&amp;gt;&amp;quot; &amp;amp; Session(&amp;quot;MySession&amp;quot;).ToString() &amp;amp; &amp;quot;&amp;lt;&amp;#160; /font&amp;gt;&amp;quot;    &lt;br /&gt;End If    &lt;br /&gt;End Sub    &lt;br /&gt;&amp;lt; /script&amp;gt;    &lt;br /&gt;&amp;lt; formrunat=&amp;quot;server&amp;quot;id=&amp;quot;Form2&amp;quot;&amp;gt;    &lt;br /&gt; &amp;lt; inputid=&amp;quot;text1&amp;quot;type=&amp;quot;text&amp;quot;runat=&amp;quot;server&amp;quot;name=&amp;quot;text1&amp;quot;&amp;gt;    &lt;br /&gt; &amp;lt; inputtype=&amp;quot;submit&amp;quot;runat=&amp;quot;server&amp;quot;OnServerClick=&amp;quot;Session_Add&amp;quot;    &lt;br /&gt; value=&amp;quot;Add to Session State &amp;quot; id=&amp;quot;Submit1&amp;quot;name=&amp;quot;Submit1&amp;quot;&amp;gt;    &lt;br /&gt; &amp;lt; inputtype=&amp;quot;submit&amp;quot;runat=&amp;quot;server&amp;quot;OnServerClick=&amp;quot;CheckSession&amp;quot;    &lt;br /&gt; value=&amp;quot; View Session State &amp;quot; id=&amp;quot;Submit2&amp;quot;name=&amp;quot;Submit2&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt; /form&amp;gt;    &lt;br /&gt;&amp;lt; hrsize=&amp;quot;1&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt; fontsize=&amp;quot;6&amp;quot;&amp;gt;&amp;lt; spanid=&amp;quot;span1&amp;quot;runat=&amp;quot;server&amp;quot; /&amp;gt;&amp;lt; /font&amp;gt;    &lt;br /&gt; 这个SessionState.aspx的页面可以用来测试在当前的服务器上是否丢失了Session信息。&lt;/p&gt;  &lt;p&gt;将服务器Session信息存储在进程中   &lt;br /&gt; 让我们来回到Web.config文件的刚才那段段落中：    &lt;br /&gt;&amp;lt; sessionState    &lt;br /&gt; mode=&amp;quot;InProc&amp;quot;    &lt;br /&gt; stateConnectionString=&amp;quot;tcpip=127.0.0.1:42424&amp;quot;    &lt;br /&gt; sqlConnectionString=&amp;quot;data source=127.0.0.1;Trusted_Connection=yes&amp;quot;    &lt;br /&gt; cookieless=&amp;quot;false&amp;quot;    &lt;br /&gt; timeout=&amp;quot;20&amp;quot;    &lt;br /&gt;/&amp;gt;    &lt;br /&gt; 当mode的值是InProc时，说明服务器正在使用这种模式。    &lt;br /&gt; 这种方式和以前ASP中的模式一样，就是服务器将Session信息存储在IIS进程中。当IIS关闭、重起后，这些信息都会丢失。但是这种模式也有自己最大好处，就是性能最高。应为所有的Session信息都存储在了IIS的进程中，所以IIS能够很快的访问到这些信息，这种模式的性能比进程外存储 Session信息或是在SQL Server中存储Session信息都要快上很多。这种模式也是ASP.NET的默认方式。    &lt;br /&gt; 好了，现在让我们做个试验。打开刚才的SessionState.aspx页面，随便输入一些字符，使其存储在Session中。然后，让我们让 IIS重起。注意，并不是使当前的站点停止再开始，而是在IIS中本机的机器名的节点上点击鼠标右键，选择重新启动IIS。(想当初使用NT4时，重新启动IIS必须要重新启动计算机才行，微软真是@#$%^&amp;amp;)返回到SessionState.aspx页面中，检查刚才的Session信息，发现信息已经丢失了。&lt;/p&gt;  &lt;p&gt;将服务器Session信息存储在进程外   &lt;br /&gt; 首先，让我们来打开管理工具-&amp;gt;服务，找到名为：ASP.NET State Service的服务，启动它。实际上，这个服务就是启动一个要保存Session信息的进程。启动这个服务后，你可以从Windows任务管理器-&amp;gt;进程中看到一个名为 aspnet_state.exe的进程，这个就是我们保存Session信息的进程。    &lt;br /&gt; 然后，回到Web.config文件中上述的段落中，将mode的值改为StateServer。保存文件后的重新打开一个IE，打开 SessionState.aspx页面，保存一些信息到Session中。这时，让我们重起IIS，再回到SessionState.aspx页面中查看刚才的Session信息，发现没有丢失。    &lt;br /&gt; 实际上，这种将Session信息存储在进程外的方式不光指可以将信息存储在本机的进程外，还可以将Session信息存储在其他的服务器的进程中。这时，不光需要将mode的值改为StateServer，还需要在stateConnectionString中配置相应的参数。例如你的计算你是 192.168.0.1，你想把Session存储在IP为192.168.0.2的计算机的进程中，就需要设置成这样： stateConnectionString=&amp;quot;tcpip=192.168.0.2:42424&amp;quot;。当然，不要忘记在192.168.0.2的计算机中装上.NET Framework，并且启动ASP.NET State Services服务。&lt;/p&gt;  &lt;p&gt;将服务器Session信息存储在SQL Server中   &lt;br /&gt; 首先，还是让我们来做一些准备工作。启动SQL Server和SQL Server代理服务。在SQL Server中执行一个叫做 InstallSqlState.sql的脚本文件。这个脚本文件将在SQL Server中创建一个用来专门存储Session信息的数据库，及一个维护Session信息数据库的SQL Server代理作业。我们可以在以下路径中找到那个文件：    &lt;br /&gt;[system drive]\winnt\Microsoft.NET\Framework\[version]\    &lt;br /&gt; 然后打开查询分析器，连接到SQL Server服务器，打开刚才的那个文件并且执行。稍等片刻，数据库及作业就建立好了。这时，你可以打开企业管理器，看到新增了一个叫ASPState的数据库。但是这个数据库中只是些存储过程，没有用户表。实际上Session信息是存储在了tempdb 数据库的ASPStateTempSessions表中的，另外一个ASPStateTempApplications表存储了ASP中 Application对象信息。这两个表也是刚才的那个脚本建立的。另外查看管理-&amp;gt;SQL Server代理-&amp;gt;作业，发现也多了一个叫做ASPState_Job_DeleteExpiredSessions的作业，这个作业实际上就是每分钟去ASPStateTempSessions 表中删除过期的Session信息的。    &lt;br /&gt; 接着，我们返回到Web.config文件，修改mode的值改为SQLServer。注意，还要同时修改sqlConnectionString的值，格式为：    &lt;br /&gt;sqlConnectionString=&amp;quot;data source=localhost; Integrated Security=SSPI;&amp;quot;    &lt;br /&gt; 其中data source是指SQL Server服务器的IP地址，如果SQL Server与IIS是一台机子，写127.0.0.1 就行了。Integrated Security=SSPI的意思是使用Windows集成身份验证，这样，访问数据库将以ASP.NET的身份进行，通过如此配置，能够获得比使用userid=sa;password=口令的SQL Server验证方式更好的安全性。当然，如果SQL Server运行于另一台计算机上，你可能会需要通过Active Directory域的方式来维护两边验证的一致性。    &lt;br /&gt; 同样，让我们做个试验。向SessionState.aspx中添加Session信息，这时发现Session信息已经存在 SQL Server中了，即使你重起计算机，刚才的Session信息也不会丢失。现在，你已经完全看见了Session信息到底是什么样子的了，而且又是存储在SQL Server中的，能干什么就看你的发挥了。&lt;/p&gt;  &lt;p&gt;总结   &lt;br /&gt; 通过这篇文章，你可以看到在Session的管理和维护上，ASP.NET比ASP有了很大的进步，我们可以更加随意的挑选适合的方法了。对于企业级的应用来说，这无疑对于服务器的同步、服务器的稳定性、可靠性都是有利的。相信在强大的微软支持下，新一代的电子商务平台将会搭建的更好！    &lt;br /&gt;同时，大家也会发现，在这个整个技术中包括了操作系统、Web服务及数据库多种技术的整合。我相信，也许Windows没有Unix稳定， IIS没有Apache稳定，SQL Server也没有Oracle强大，但是，谁可以将他们如此完美的联动到一起呢？所以说，虽然微软每一方面都不是太强，但是如果把微软的东西都整合到一起，谁敢说他不强大呢？微软就是微软！&lt;/p&gt;  &lt;p&gt;三、Asp.net 关于form认证的一般设置   &lt;br /&gt;asp.net 关于form认证的一般设置：    &lt;br /&gt;1: 在web.config中，加入form认证；    &lt;br /&gt;&amp;lt;authentication mode=&amp;quot;Forms&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;forms name=&amp;quot;auth&amp;quot; loginUrl=&amp;quot;index.aspx&amp;quot; timeout=&amp;quot;30&amp;quot;&amp;gt;&amp;lt;/forms&amp;gt;    &lt;br /&gt;&amp;lt;/authentication&amp;gt;    &lt;br /&gt;&amp;lt;authorization&amp;gt;    &lt;br /&gt;&amp;lt;deny users=&amp;quot;?&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;lt;/authorization&amp;gt;    &lt;br /&gt;2: 如果有注册页面时还应该允许匿名用户调用注册页面进行注册;    &lt;br /&gt;以下代码应该在&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;之间,而不应该包含到&amp;lt;system.web&amp;gt;..&amp;lt;/system.web&amp;gt;之间;    &lt;br /&gt;----------------表示允许 匿名用户对 userReg.aspx页面进行访问.    &lt;br /&gt;&amp;lt;location path=&amp;quot;userReg.aspx&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;system.web&amp;gt;    &lt;br /&gt;&amp;lt;authorization&amp;gt;    &lt;br /&gt;&amp;lt;allow users=&amp;quot;?&amp;quot; /&amp;gt;    &lt;br /&gt;&amp;lt;/authorization&amp;gt;    &lt;br /&gt;&amp;lt;/system.web&amp;gt;    &lt;br /&gt;&amp;lt;/location&amp;gt;    &lt;br /&gt;3 在登录成功后要创建身份验证票, 表明已经通过认证的合法用户;    &lt;br /&gt;if(登陆成功)&lt;/p&gt;  &lt;p&gt;System.Web.Security.FormsAuthentication.SetAuthCookie(用户名称, false);   &lt;br /&gt; 四、访问Web.config文件    &lt;br /&gt; 你可以通过使用ConfigurationSettings.AppSettings 静态字符串集合来访问 Web.config 文件示例：获取上面例子中建立的连接字符串。例如：&lt;/p&gt;  &lt;p&gt;protected static string Isdebug = ConfigurationSettings.AppSettings[&amp;quot;scon&amp;quot;]   &lt;br /&gt;该文章转自Doorle's Blog-多乐博客：http://www.doorle.cn/blog/article.asp?id=923&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2422784.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2012/03/29/2422784.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
