<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_苦并快乐着！</title><subtitle type="text">生命的乐趣在于理性地折磨自己</subtitle><id>http://feed.cnblogs.com/blog/u/25661/rss</id><updated>2011-10-15T02:12:27Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/25661/rss"/><entry><id>http://www.cnblogs.com/xingshao/archive/2011/09/29/2195746.html</id><title type="text">CAS 与.net 集成的 “循环重定向”问题分析</title><summary type="text">本文强调的其实并不是 解决“cas .net集成”这个现象，而是在解决这个现象的过程。在开发过程中，所有遇到的技术问题并不可怕，可怕的是你不知道如何去分析、分解问题，“大而化小，小而化了”才是解决问题的精髓。</summary><published>2011-09-29T09:42:00Z</published><updated>2011-09-29T09:42:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2011/09/29/2195746.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2011/09/29/2195746.html"/><content type="html">&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 近期的一个项目，项目包含了若干的子系统，因为人员配备的原因，项目会包含不同开发语言编写〔&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;java&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;〕的几个子系统。项目从企业应用集成的角度进行架构，除了在应用层面上的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;ldquo;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;业务流程整合&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;之外。还有一个就是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;ldquo;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;身份认证&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;rdquo;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;层面上的集成，身份认证的整合应用了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;CAS (Central Authentication Service)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;，它是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Yale &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;大学的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; ITS &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;开发的一套&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; JAVA &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;实现的开源的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;SSO(single sign-on)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的服务。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的部署、实现在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;java&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;项目系统中都很顺利的架设，实现了。但是在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;子系统中遇到了问题，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;下的集成是我今天要说的。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;集成之初，参考了官上的范例&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;(http://www.jasig.org/cas),&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;它也提供&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;客户端的源码下载。但是在调试的时候，出现了&amp;ldquo;循环请求验证&amp;rdquo;的现象，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Ie&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的现象是&amp;ldquo;一直登录&amp;rdquo;，火狐下直接提示&amp;ldquo;循环访问&amp;rdquo;一类的错误。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;googel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;直接找解决方法，但是遗憾的是并没有直接解决类似问题的信息。有几篇文章提到了这个现象，但是并没有提出解决方案，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;msdn&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;中有这个问题，但是恢复者都是三言两语，没有详细的解决方案，有的回答说&amp;ldquo;官网提供的是个半成品&amp;rdquo;。无语&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;..&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;暂且信之吧。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;问题总是要解决的，以前没有实际使用过这个东西，所以还是从头开始吧，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;googel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;了一些&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的知识，对&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的机制，应用过程进行了解。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;具体知识详见&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;span lang="EN-US"&gt;&lt;a href="http://linliangyi2007.iteye.com/blog/165310"&gt;http://linliangyi2007.iteye.com/blog/165310&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;说的很通俗〕。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Cas .net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;版本的客户端&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;是结合了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;asp.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;自身的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;forms&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;认证实现认证的。它是通过编写一个&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;httpModel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;进行拦截，通过对客户端票据〔&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;ticket&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;〕的检查来实现对每一次请求的过滤，进而达到对功能页面的控制。首先在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;web.config&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;中要配置一系列的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;服务端的参数信息，直接贴出&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;configSections&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;section&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;name&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;casClientConfig&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;configSections&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;casClientConfig&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;casServerLoginUrl&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;http://192.168.12.196/cas/login&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;casServerUrlPrefix&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;http://192.168.12.196/cas&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;serverName&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;http://localhost:3273/ExampleWebSite&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;notAuthorizedUrl&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;~/NotAuthorized.aspx&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;cookiesRequiredUrl&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;~/CookiesRequired.aspx&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;redirectAfterValidation&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;true&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;gateway&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;false&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;renew&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;false&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;singleSignOut&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;true&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;ticketTimeTolerance&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;5000&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;ticketValidatorName&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;Cas20&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;serviceTicketManager&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;CacheServiceTicketManager&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;gatewayStatusCookieName&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;CasGatewayStatus&lt;/span&gt;"&lt;span style="color: blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;system.web&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;自己的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Forms&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;认证这的配置也很重要，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;authentication&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;mode&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;Forms&lt;/span&gt;"&lt;span style="color: blue;"&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&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;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;forms&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;loginUrl&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;http://192.168.12.196/cas/login&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;timeout&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;30&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;defaultUrl&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;~/Default.aspx&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;cookieless&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;UseCookies&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;slidingExpiration&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;true&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&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&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;path&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;/ExampleWebSite/&lt;/span&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;/&amp;gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;authentication&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;authorization&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;deny&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;users&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;?&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;allow&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;users&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;*&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;authorization&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;最后就是&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;httpModel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的配置了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;httpModules&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;add&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-family: NSimSun; color: red; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;name&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;DotNetCasClient&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;type&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;DotNetCasClient.CasAuthenticationModule,DotNetCasClient&lt;/span&gt;"&lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family: NSimSun; color: #a31515; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;httpModules&lt;/span&gt;&lt;span style="font-family: NSimSun; color: blue; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;至此&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的基础配置完成了，但是这是不够的，这个的配置并没有错，但是实际运行中就会出现上述的&amp;ldquo;循环验证&amp;rdquo;的问题，通过分析代码，发现循环重定向到&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;login&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;页面的原因是每一次的验证都是失败，票据丢失，会话状态丢失。这个是引起循环重定向的直接凶手，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;请求系统页面&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;--&amp;gt;httpModel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;重定向&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings;" lang="EN-US"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;&amp;agrave;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;登录页&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings;" lang="EN-US"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;&amp;agrave;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;登录后的系统页面&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings;" lang="EN-US"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;&amp;agrave;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;httpModel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;验证&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;ticket&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;失败&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: Wingdings; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: Wingdings;" lang="EN-US"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;&amp;agrave;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;重定向登录&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;这个过程周而复始，那么问题的核心在那呢？&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;ldquo;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;httpModel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;验证失败&amp;rdquo;，这个是整个问题过程中的核心，通过调试，最终也确定了导致失败的最终代码段。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;httpModel &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; color: #2b91af; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;CasAuthenticationTicket&lt;/span&gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt; casTicket = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&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: #2b91af;"&gt;FormsAuthenticationTicket&lt;/span&gt; formsAuthenticationTicket = GetFormsAuthenticationTicket();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&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: blue;"&gt;if&lt;/span&gt; (formsAuthenticationTicket != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&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;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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: #2b91af;"&gt;ICasPrincipal&lt;/span&gt; principal;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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: blue;"&gt;if&lt;/span&gt; (ServiceTicketManager != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt; serviceTicket = formsAuthenticationTicket.UserData;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&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;&lt;/span&gt;casTicket = ServiceTicketManager.GetTicket(serviceTicket);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: NSimSun; font-size: 9.5pt; mso-bidi-font-family: NSimSun; mso-font-kerning: 0pt;" lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (casTicket != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;没有发现票据，也就是说票据实失效引起的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;认证的重定向登录，那么是谁引起的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;ticket&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的失效呢？&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;最终排除了&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;客户端和服务端的问题，也就是说&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;配置是正确的，？？那是什么引起最初的&amp;ldquo;循环重定向&amp;rdquo;现象呢。&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;ldquo;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Asp.net forms &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;验证下的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;session&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;失效&amp;rdquo;，问题由&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;踢给&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;自己的问题。&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;最终问题再次转移了，变成了&amp;ldquo;在&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;下，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;session&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;失效的问题&amp;rdquo;，但是也看到了曙光，因为这个问题&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;googel&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;一下&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;会有太多的信息供你浏览。&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;同时，我发现我被&amp;ldquo;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;java &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;、&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;rdquo;这样的词误导了。基于&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;集成本身并不全是&amp;ldquo;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;rdquo;的问题，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;也是整合的一部分。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;直接增加配置：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="color: blue;" lang="EN-US"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515;" lang="EN-US"&gt;sessionState&lt;/span&gt;&lt;span style="color: blue;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="color: red;" lang="EN-US"&gt;mode&lt;/span&gt;&lt;span style="color: blue;" lang="EN-US"&gt;=&lt;/span&gt;&lt;span lang="EN-US"&gt;"&lt;span style="color: blue;"&gt;StateServer&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;cookieless&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;UseCookies&lt;/span&gt;"&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;span style="color: red;"&gt;timeout&lt;/span&gt;&lt;span style="color: blue;"&gt;=&lt;/span&gt;"&lt;span style="color: blue;"&gt;36000&lt;/span&gt;"&lt;span style="color: blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515;"&gt;sessionState&lt;/span&gt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;1、启用会话状态，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;、开始&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;asp.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;状态服务〔确保会话的持久，不在莫名其妙的失效。〕&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;、对一些系统的页面进行页面缓存禁用，因为有几次&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;..&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;缓存的页面又一次误导了，让我以为&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的认证有问题。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;通过解决&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;asp.net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;会话失效问题，发现应用&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;后的&amp;ldquo;循环重定向&amp;rdquo;问题没有了。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;最后要说一下&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的&amp;ldquo;登出&amp;rdquo;操作，&amp;ldquo;登出&amp;rdquo;必须要&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;.net forms&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;登出和&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;的服务端登出结合。一定要先将服务端会话&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;Abandon&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;，然后在对&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cookie&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;进行过期操作。最后清清除&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;服务端的验证票据。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="color: #2b91af;" lang="EN-US"&gt;FormsAuthenticationTicket&lt;/span&gt;&lt;span lang="EN-US"&gt; ticket = &lt;span style="color: #2b91af;"&gt;FormsAuthentication&lt;/span&gt;.Decrypt(ticketCookie.Value);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;CasAuthentication&lt;/span&gt;.ServiceTicketManager != &lt;span style="color: blue;"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; ticket.UserData.Length &amp;gt; 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;CasAuthenticationTicket&lt;/span&gt; casTicket = &lt;span style="color: #2b91af;"&gt;CasAuthentication&lt;/span&gt;.ServiceTicketManager.GetTicket(ticket.UserData);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;CasAuthentication&lt;/span&gt;.ServiceTicketManager.RevokeTicket(casTicket.ServiceTicket);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;CasAuthentication&lt;/span&gt;.ClearAuthCookie();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;Session.Clear();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: blue;"&gt;this&lt;/span&gt;.Session.Abandon();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;Request.Cookies.Remove(&lt;span style="color: #2b91af;"&gt;FormsAuthentication&lt;/span&gt;.FormsCookieName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;Page.Response.Cookies.Remove(&lt;span style="color: #2b91af;"&gt;FormsAuthentication&lt;/span&gt;.FormsCookieName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&lt;span style="mso-spacerun: yes;"&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; &lt;/span&gt;&lt;span style="color: #2b91af;"&gt;CasAuthentication&lt;/span&gt;.SingleSignOut();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;&amp;nbsp;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 至此，&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas .net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;集成的问题彻底解决。本文强调的其实并不是&lt;/span&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt; &lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;解决&amp;ldquo;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span style="font-family: Calibri;" face="Calibri"&gt;cas .net&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;集成&amp;rdquo;这个现象，而是在解决这个现象的过程。在开发过程中，所有遇到的技术问题并不可怕，可怕的是你不知道如何去分析、分解问题，&amp;ldquo;大而化小，小而化了&amp;rdquo;才是解决问题的精髓。之所以说解决不了的问题，是因为你没有掌握分析、解决问题所必要的基础信息，比如&amp;ldquo;相关的领域知识&amp;rdquo;、涉及的技术特点。如果碰到了解决不了的问题，那肯定是在领域知识方面有欠缺，致使你不能分析、不能分解。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="margin: 0cm 0cm 0pt;" &gt;&lt;span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 结论，在领域知识掌握到一定程度后，在领域范围内，你就是专家。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/2195746.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2011/09/29/2195746.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2011/03/09/1978262.html</id><title type="text">.net 开发 跬步篇（6〕—绝对路径转换相对路径的</title><summary type="text">.net 框架为什么不再完美一点呢。相对路径转换绝对路径很有用、绝对路径转换相对路径一样很有用。</summary><published>2011-03-09T05:56:00Z</published><updated>2011-03-09T05:56:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2011/03/09/1978262.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2011/03/09/1978262.html"/><content type="html">&lt;p align="left"&gt;在开发中我们经常会碰到路径问题。这就涉及两个概念，绝对路径和相对路径。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;在winform开发中我们经常会用到&amp;ldquo;Application.StartupPath&amp;rdquo;开得到当前运行程序的路径，然后来拼接需要运行的程序名称用来运行程序〔当然直接运行程序名称也可以〕。这是应用就涉及了相对路径和绝对路径，我们用 &amp;ldquo;&amp;nbsp;Application.StartupPath&amp;rdquo;+"程序名称"就是绝对路径，而直接用&amp;ldquo;程序名称"则是相对路径〔相对与当前运行目录〕虽然得到的效果是一样的。但是本质上是有区别的。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;在web开发中都是使用相对路径，基本很少使用绝对路径。只有在涉及文件操作、访问服务器其他资源的时候才会用到。典型的就是上传文件后，文件的存取：　Server.MapPath（&amp;ldquo;相对路径参数&amp;rdquo;）。&lt;/p&gt;&#xD;
&lt;p align="left"&gt;前几天碰到了一个问题，是基于一个c的dll来实现特定的功能。但是它封装的函数中需要两个参数，两个路径的参数。而且是需要相对路径的参数。郁闷了，相对转换绝对很方便。vs也提供了直接的函数来使用。但是绝对转化相对却没有发现。经过googel后，发现有c 语言中有利用window api来是实现的方式。所以用c#实现，并附上代码。&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;[DllImport("shlwapi.dll", CharSet = CharSet.Auto)]&#xD;
       public static extern bool PathRelativePathTo(&#xD;
             [Out] StringBuilder pszPath,&#xD;
              string pszFrom,&#xD;
              FileAttributes dwAttrFrom,&#xD;
              string pszTo,&#xD;
              FileAttributes dwAttrTo&#xD;
);&#xD;
      /// &amp;lt;summary&amp;gt;&#xD;
        /// 转换绝对路径为相对路径&#xD;
        /// &amp;lt;/summary&amp;gt;&#xD;
        /// &amp;lt;param name="absolutePath"&amp;gt;&amp;lt;/param&amp;gt;&#xD;
        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&#xD;
        public static string Transform(string absolutePath)&#xD;
        {&#xD;
            StringBuilder path = new StringBuilder(260);&#xD;
            Commons.PathRelativePathTo(path, System.Windows.Forms.Application.StartupPath, System.IO.FileAttributes.Directory,&#xD;
                absolutePath, System.IO.FileAttributes.Normal);&#xD;
&#xD;
            return path.ToString();&#xD;
&lt;/pre&gt;&#xD;
&lt;pre &gt;}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/1978262.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2011/03/09/1978262.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html</id><title type="text">麻雀虽小，五脏俱全－C# 创建windows服务、socket通讯实例</title><summary type="text">精品学习小菜：文件夹监视工具。采用原料：windows服务、socket、邮件、短信设备、c#、.net；点评：功能简单，知识点俱全、浅显易懂，是学习windows服务、socket、邮件、短信等知识的必尝小菜。</summary><published>2010-08-12T07:28:00Z</published><updated>2010-08-12T07:28:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html"/><content type="html">&lt;p&gt;本人一直以来都是一个实践主义者，认为在实践中学习，是最好的学习方式。所以在博客中添加文章的时候，总是习惯写一些具体实现的技术知识点。感觉这些东西可以更好的帮助那些学习使用.net c#进行开发开发者。虽然自己的文笔不好，知识的应用也很渐显，但是本着互相学习的精神，希望在总结的同时可以加深自己的理解，考效自己对各个知识的了解程度，共同提高。&lt;/p&gt;&#xD;
&lt;p&gt;言归正传,我今天要说的就是一个windows 服务结合 Soctket、邮件发送、短信发送的小应用。功能不大，但是用到的.net下的知识点很多，我感觉对初步接触这几个相关知识的朋友还是有学习意义的。&lt;/p&gt;&#xD;
&lt;p&gt;这个功能来源于一个监视文件夹的需求：&lt;/p&gt;&#xD;
&lt;p&gt;1、 轮询监视文件夹内文件的状态&lt;/p&gt;&#xD;
&lt;p&gt;2、 在发现异常后通过邮件和短信的方式通知管理员。&lt;/p&gt;&#xD;
&lt;p&gt;3、 在有外网环境下使用邮件方式通知。&lt;/p&gt;&#xD;
&lt;p&gt;4、 无外网情况下，通过局域网中一台带有的短信设备电脑发送短信提醒。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在经过具体的功能分析后，将功能划分为4个小功能单元：&lt;/p&gt;&#xD;
&lt;p&gt;1、&amp;nbsp; 运用c#开发windows服务来实现对文件夹的轮询监视。&lt;/p&gt;&#xD;
&lt;p&gt;2、&amp;nbsp; 引用.net框架内的system.net.mail 命名控件的下的邮件处理类来实现邮件的发送。&lt;/p&gt;&#xD;
&lt;p&gt;3、&amp;nbsp; 局域网内采用scoket解决局域网内短信设备计算机与监控计算机之间的通讯问题。&lt;/p&gt;&#xD;
&lt;p&gt;4、&amp;nbsp; C#对短信设备进行简单必要的二次开发。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一、windows服务实现轮询监视&lt;/p&gt;&#xD;
&lt;p&gt;Windows 服务，以前的NT服务，都是被作为Windows NT操作系统的一部分引进来的。你需要使用NT级别的操作系统才可运行Windows服务，诸如：Windows NT、Windows 2000 Professional、windows XP或Windows 2000 Server以上操作系统。举例而言，以Windows服务形式的产品有：Microsoft Exchange、SQL Server，还有别的如设置计算机时钟的Windows Time服务。它随 Windows 操作系统启动而启动的，在后台运行的，通常不和用户产生交互的程序。&lt;/p&gt;&#xD;
&lt;p&gt;在.net框架下创建Windows 服务非常的简单快捷，它封装了Windows服务程序的创建和控制过程，程序相关的命名空间涉及到以下两个：System.ServiceProcess和System.Diagnostics。&lt;/p&gt;&#xD;
&lt;p&gt;首先是创建windows服务，在.net框架中直接创建windows服务项目即可，在服务启动事件中添加必要的逻辑处理。〔实现见下代码〕&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;override&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; OnStart(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; TODO: 在此处添加代码以启动服务。&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;读取配置信息&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            ReadConfig();&lt;br /&gt;          &lt;br /&gt;            timer1.Elapsed&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; System.Timers.ElapsedEventHandler(timer1_Elapsed);&lt;br /&gt;            timer1.Interval &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GlobalInfo.TimeInterval;&lt;br /&gt;            timer1.Start();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; timer1_Elapsed(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, System.Timers.ElapsedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;          &lt;br /&gt;            DirectoryInfo dirs &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; DirectoryInfo(GlobalInfo.DirName); &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; count&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;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (GlobalInfo.Type)&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&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;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;延迟时间&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (FileInfo var &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; dirs.GetFiles())&lt;br /&gt;                    {&lt;br /&gt;                        DateTime createTime &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; var.CreationTime;&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (System.DateTime.Now &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; createTime.AddHours(GlobalInfo.Size))&lt;br /&gt;                            count&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                    }&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (count &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&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;                        MessageSender.Send(GlobalInfo.Norm &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&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;?&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt; : &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0}个数据文件延迟超过{1}小时,请关注。[报告时间：{2}]&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, count.ToString(), GlobalInfo.Size.ToString(), System.DateTime.Now.ToString()));&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&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: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;延时数据包个数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                    count &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dirs.GetFiles().Length;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (count &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; GlobalInfo.Count)&lt;br /&gt;                        MessageSender.Send(GlobalInfo.Norm &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&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;?&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt; : &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;同时有{0}个数据文件滞留,请关注。[报告时间：{1}]&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, count.ToString(), System.DateTime.Now.ToString()));&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;二、邮件发送功能&lt;/p&gt;&#xD;
&lt;p&gt;在以前的一篇文章中提到过邮件类的使用，所以就不在作详细说明了。〔附代码：见下〕&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;static void  Send(string titel,string megHtml,string subject)&#xD;
        {&#xD;
            string meg = "";&#xD;
            //发送者&#xD;
            string smtpAuthUsername = GlobalInfo.SenderAddr;&#xD;
            //发送者密码&#xD;
            string smtpAuthPassword = GlobalInfo.SenderPwd;&#xD;
            //发送服务器&#xD;
            string smtpServer = GlobalInfo.SmtpServer;&#xD;
            string objEmail = GlobalInfo.ObjAddr;&#xD;
            //定义传输协议 &#xD;
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(smtpServer);&#xD;
            //设置认证发件人 &#xD;
            smtp.Credentials = new System.Net.NetworkCredential(smtpAuthUsername, smtpAuthPassword);&#xD;
            //异步发送完成获取发送状态 &#xD;
            smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);&#xD;
&#xD;
            try&#xD;
            {&#xD;
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();&#xD;
                mail.From = new System.Net.Mail.MailAddress(smtpAuthUsername, smtpAuthUsername);&#xD;
                //回复人，回复人名 &#xD;
                mail.ReplyTo = new System.Net.Mail.MailAddress(smtpAuthUsername, smtpAuthUsername);&#xD;
                //收件人 &#xD;
                mail.To.Add(objEmail);&#xD;
                //邮件优先级 &#xD;
                mail.Priority = System.Net.Mail.MailPriority.Normal;&#xD;
                //设置html邮件 &#xD;
                mail.IsBodyHtml = true;&#xD;
                //标题 &#xD;
                mail.Subject = titel;&#xD;
                //内容 &#xD;
                mail.Body = megHtml;&#xD;
                smtp.Send(mail);&#xD;
&#xD;
                meg = string.Format("{0} {1}邮件发送成功。", System.DateTime.Now.ToString(), objEmail);&#xD;
&#xD;
                WriteLog(meg);&#xD;
            }&#xD;
            catch&#xD;
            {&#xD;
                meg = string.Format("{0} {1}邮件发送失败。", System.DateTime.Now.ToString(), objEmail);&#xD;
&#xD;
                WriteLog(meg);&#xD;
            }&#xD;
&#xD;
        }&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;三、局域网内Socket通讯&lt;/p&gt;&#xD;
&lt;p&gt;Socket原意是&amp;ldquo;插座&amp;rdquo;。应用层通过传输层进行数据通信时，TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接，许多计算机操作系统为应用程序与TCP／IP协议交互提供了称为套接字(Socket)的接口，区分不同应用程序进程间的网络通信和连接。 生成套接字，主要有3个参数：通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。通过将这3个参数结合起来，与一个&amp;ldquo;插座&amp;rdquo;Socket绑定，应用层就可以和传输层通过套接字接口，区分来自不同应用程序进程或网络连接的通信，实现数据传输的并发服务。 Socket可以看成在两个程序进行通讯连接中的一个端点，一个程序将一段信息写入Socket中，该Socket将这段信息发送给另外一个Socket中，使这段信息能传送到其他程序中。&lt;/p&gt;&#xD;
&lt;p&gt;因为现有的短信设备位与局域网内的另外一台服务器上，所以需要在短信通知状态下，需要将信息发送到局域网内另一台电脑。用socket通讯的话需要一个接收信息的客户端。并且客户端需要一些参数的设置。比如：接收电话号码、开机启动、通讯计算机IP、等。〔信息接收代码见下〕&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);&#xD;
            socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1); &#xD;
            try&#xD;
            {&#xD;
                socket.Bind(new IPEndPoint(IPAddress.Parse(Info.IP), int.Parse(Info.PORT)));&#xD;
                socket.Listen((int)SocketOptionName.MaxConnections);&#xD;
                while (true)&#xD;
                {&#xD;
                    Socket a = socket.Accept();&#xD;
                    if (a.Connected)&#xD;
                    {&#xD;
                        byte[] stream = new byte[80];&#xD;
                        a.Receive(stream);&#xD;
                        string message = System.Text.Encoding.UTF8.GetString(stream);&#xD;
                        InsertRechText ins = new InsertRechText(Insert);&#xD;
                        Invoke(ins, new object[] { message });&#xD;
                    }&#xD;
                    if (isover)&#xD;
                        return;&#xD;
                }&#xD;
            }&#xD;
            catch (Exception ex)&#xD;
            {&#xD;
                WriteLog(string.Format("接收信息失败。[{0}]", ex.Message));&#xD;
                throw ex;&#xD;
            }&#xD;
            finally&#xD;
            {&#xD;
                socket.Close();&#xD;
            }&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;四、短信设备二次开发&lt;/p&gt;&#xD;
&lt;p&gt;短信设备用的是人大金仓的DG-C1A 短信猫。该硬件有对应的二次开发类库，开发很简单。直接将引用方法封装成一个类的静态方法。用的时候直接调用就可以了。(直接贴出代码)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;[DllImport("GSMMultiPort.dll",&#xD;
             EntryPoint = "GSMModemInit",&#xD;
             CharSet = CharSet.Ansi,&#xD;
             CallingConvention = CallingConvention.StdCall)]&#xD;
        public static extern bool GSMModemInit(&#xD;
            string device,&#xD;
            string baudrate,&#xD;
            string initstring,&#xD;
            string charset,&#xD;
            bool swHandshake,&#xD;
            string sn);&#xD;
//发送短信息&#xD;
        [DllImport("GSMMultiPort.dll",&#xD;
             EntryPoint = "GSMModemSMSsend",&#xD;
             CharSet = CharSet.Ansi,&#xD;
             CallingConvention = CallingConvention.StdCall)]&#xD;
        public static extern bool GSMModemSMSsend(&#xD;
            string device,&#xD;
            string serviceCenterAddress,&#xD;
            int encodeval,&#xD;
            string text,&#xD;
            int textlen,&#xD;
            string phonenumber,&#xD;
            bool requestStatusReport);&#xD;
  //取得错误信息	&#xD;
        [DllImport("GSMMultiPort.dll",&#xD;
             EntryPoint = "GSMModemGetErrorMsg",&#xD;
             CharSet = CharSet.Ansi,&#xD;
             CallingConvention = CallingConvention.StdCall)]&#xD;
        public static extern string GSMModemGetErrorMsg(string device);&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在完成功能后，部署，运行效果不错。感觉这个功能虽然很小。但是用到的知识可不少，感觉还是有所收获的。毕竟术业有专攻，每个人在从事的行业开发中专注的技术也是有限的。多学点各个方面的知识对自己的成长还是很有好处的。哈哈.〔啰嗦了〕。共同学习吧。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/1798188.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2010/08/12/1798188.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/08/06/1793827.html</id><title type="text">asp.net 跬步篇（5） repeater 自定义模板实现特殊样式控件</title><summary type="text">Repeater 是一个高效，充满无限可能性的基础控件。它活跃在方方面面的数据呈现功能中。在涉及绑定功能的开发上一直对它情有独钟。一直在实际应用中发现它灵活的实现。今天这个例子体现的我决绝的不仅仅是一个技术片段、同时也是一种灵活运用思想。</summary><published>2010-08-06T03:21:00Z</published><updated>2010-08-06T03:21:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/08/06/1793827.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/08/06/1793827.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;最近在对一个项目的功能进行维护的时候，碰到了一个很特别的问题。项目实现的功能动态调查表。也就是根据动态生成调查问卷。问卷在不同的类型下有不同的问题内容。前期已经完成了功能的开发。但是现在的调查问卷出现了一个特别的题目样式，已经不是单纯的单选、或者多选、文本。而是一个具备多个控件特点的复合控件,而且要在后台可以进行动态添加。如果按照用户控件思路编写的话，感觉实现上比较复杂、页面绑定也比较麻烦。所以就想干脆写一个新的具备要求特点的控件，然后在有这个类型的控件时，直接后台添加。给这个控件增加必要的属性〔绑定、取值〕。在编写之前就是确定编写的基础，是从头开始写？还是在已有的控件基础上进行扩展。控件样式如下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&lt;img src="http://pic002.cnblogs.com/img/xingshao/201008/2010080611013410.jpg" /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&#xD;
&lt;div &gt;据功能要求概括控件具备一下功能：具备动态绑定功能、项目由一个复选框和文本框组成。&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;/p&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;最终决定用repeater 来扩展。repeater本身的绑定应该是很高效的，干净。然后就是选项的问题。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;直接定义一个新的repeater模板来生成。动态绑定repeater 就出现了上述效果。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;模版定义代码见下：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('9678f80c-c098-41d8-9ad2-312ce660fb7f')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div  id="cnblogs_code_open_9678f80c-c098-41d8-9ad2-312ce660fb7f"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; RepeaterTemplate : ITemplate&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dataValueField;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; _dataTextField;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; _textboxField;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; TextboxField&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt; { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; _textboxField; }&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt; { _textboxField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; value; }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; RepeaterTemplate(Repeater rpt, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataValueField, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataTextField)&lt;br /&gt;    {&lt;br /&gt;        _dataValueField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataValueField;&lt;br /&gt;        _dataTextField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataTextField;&lt;br /&gt;        rpt.ItemDataBound &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; RepeaterItemEventHandler(rep_ItemDataBound);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; RepeaterTemplate(Repeater rpt, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataValueField, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataTextField,&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; textboxField)&lt;br /&gt;    {&lt;br /&gt;        _dataValueField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataValueField;&lt;br /&gt;        _dataTextField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dataTextField;&lt;br /&gt;        _textboxField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; textboxField;&lt;br /&gt;        rpt.ItemDataBound &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; RepeaterItemEventHandler(rep_ItemDataBound);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; InstantiateIn(Control container)&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        CheckBox chk &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; CheckBox();&lt;br /&gt;        chk.ID &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: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CTCheck&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        TextBox tbx &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; TextBox();&lt;br /&gt;        tbx.ID &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: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CTText&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        HiddenField value &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HiddenField();&lt;br /&gt;        value.ID &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: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;hdfValue&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;        HtmlGenericControl tr &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HtmlGenericControl(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;tr&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;        HtmlGenericControl td1 &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HtmlGenericControl(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;        HtmlGenericControl td2 &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HtmlGenericControl(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;td&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;&lt;br /&gt;        td1.Controls.Add(chk);&lt;br /&gt;        td1.Controls.Add(value);&lt;br /&gt;        td2.Controls.Add(tbx);&lt;br /&gt;        tr.Controls.Add(td1);&lt;br /&gt;        tr.Controls.Add(td2);&lt;br /&gt;&lt;br /&gt;        container.Controls.Add(tr);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; rep_ItemDataBound(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, RepeaterItemEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        DataRowView drv &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (DataRowView)e.Item.DataItem;&lt;br /&gt;        CheckBox chk &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (CheckBox)e.Item.FindControl(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CTCheck&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;        HiddenField value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (HiddenField)e.Item.FindControl(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;hdfValue&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;        TextBox tbx&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (TextBox)e.Item.FindControl(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;CTText&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (chk &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;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&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;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(_textboxField))&lt;br /&gt;            {&lt;br /&gt;                tbx.Text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; drv[_textboxField].ToString();&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (drv[_textboxField].ToString().Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&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;                    chk.Checked &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;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; "Checked";&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;chk.Checked = true;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            }&lt;br /&gt;            chk.Text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; drv[_dataTextField].ToString();&lt;br /&gt;            value.Value &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; drv[_dataValueField].ToString();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;在封装的控件内部绑定repeater 就可以了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('f9ffe850-d2f6-49f5-937b-31ebdb5755c8')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div  id="cnblogs_code_open_f9ffe850-d2f6-49f5-937b-31ebdb5755c8"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;       Repeater rpt &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Repeater();&lt;br /&gt;                    rpt.ID &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: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;rpt&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                    rpt.HeaderTemplate &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; HeaderTemplate();&lt;br /&gt;                    rpt.FooterTemplate &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FooterTemplate();&lt;br /&gt;                    rpt.ItemTemplate &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; RepeaterTemplate(rpt, 字段,字段, 字段);&lt;br /&gt;                    &lt;br /&gt;                    rpt.DataSource &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; temp;&lt;br /&gt;                    rpt.DataBind();&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;互相学习，也希望可以对一些初学的同学在认识使用repeater上有帮助。最后：程序只有想不到的，没有做不到的。&lt;/p&gt;&#xD;
&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/1793827.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2010/08/06/1793827.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/06/23/1763674.html</id><title type="text">asp.net 跬步篇（4） EnableSessionState设置 引起的框架集加载问题</title><summary type="text">一个程序性能的提升，可能原因只是一个小小的知识应用。在开发中有太多我们忽略的知识，查漏补缺吧。session 访问存在的性能提升空间。</summary><published>2010-06-23T07:53:00Z</published><updated>2010-06-23T07:53:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/06/23/1763674.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/06/23/1763674.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt;前两天对一个已经完成的项目进行代码优化的时候，每次登录后，切换到主页面发现加载的时候有明显的页面先后加载现象，给人感觉系统性能不好。而且主页面加载并没有做什么比较复杂的操作，只有导航栏初始化复杂一点。内容区和标题栏区基本上没有逻辑操作。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主页面应用了iframe框架集，印象中它的加载是异步的。那么为什么会出现这样的问题呢？在网络上一阵狂找，遗憾的是资料显示，iframe加载就是异步加载。不会出现请求排队的问题，问题不会出现在应用框架集上。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;为了找到问题所在，我新建立了三个个html页来代替项目主页实际加载的三个区域，结果是加载很快，基本上就是一下子全都出来了。（更加确定不是框架集的问题）然后我用导航栏页面.aspx＋标题栏.html＋内容区.hyml进行测试，依然很好。难道是我的标题栏和内容区的问题？但是这个页面除了是.aspx后缀和html文件基本没有什么区别，这两个区域在登录后就是显示背景图片和文字信息，没有涉及其它复杂的操作。疑惑中只能将问题暂时放下，下午在和一个新同事说到单例模式的时候，忽然灵光一闪。（灵感啊）页面加载不是框架集问题，那么就是三个.aspx页面请求发生了排队。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;经比对三个页面都涉及同时访问了session对象，session会不会存在锁定机制呢，直接在googel上搜索了一下。&lt;/span&gt;&lt;/span&gt;&lt;a target="_blank" href="http://www.jb51.net/article/9442.htm"&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt;http://www.jb51.net/article/9442.htm&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt; &amp;nbsp;看到了我碰到的问题的解决方法。EnableSessionState=&amp;rdquo;readonly&amp;rdquo; 可以避免写锁定，aspx页面默认状态下该属性默认为&amp;ldquo;True&amp;ldquo;。平时没有用到过 EnableSessionState 属性，所以不是很熟悉，（芝麻虽小亦是食儿啊），在开发中有时候会碰到这样那样的问题，可能原因只是因为对小知识的不了解。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 12pt;"&gt;&lt;span style="font-family: 宋体;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 没有解决不了的，只有不知道怎么解决的。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/1763674.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2010/06/23/1763674.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/03/26/1697059.html</id><title type="text">控制CPU曲线引发的感想</title><summary type="text">作为一个技术人谦虚是一样必要品质。在无涯学海，谦虚是不断学习，不断成长的源动力。</summary><published>2010-03-26T07:29:00Z</published><updated>2010-03-26T07:29:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/03/26/1697059.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/03/26/1697059.html"/><content type="html">&lt;p style="text-align: center;"&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;前两天因为评论了一片文章，谁想竟然引出了&amp;ldquo;交流事件&amp;rdquo;，很是感觉憋屈！话说，某天我在园子里面游荡看看新的文章。当看到那个稿子的题目的时候，猛一看感觉挺高深的，就想仔细研究一下。&lt;/p&gt;&#xD;
&lt;p&gt;一直觉得操作系统是程序之美的最强体现，文章&amp;ldquo;CPU曲线控制&amp;rdquo;的标题给人一种错觉，可能会涉及操作系统中对协调多核处理器发挥最强性能的问题。是每一个程序员都会感兴趣的话题。孰知看完之后有种&amp;ldquo;鸡肋&amp;rdquo;的感觉，文章所阐述的东西没有什么实际的使用意义。只是为了显示而显示，为了博客而博客，所以就有了&amp;ldquo;没有实际意义&amp;rdquo;评论了。可能作者一直都在期待赞美、崇拜的声音，我不和谐的声音地出现显得的那么刺头。理所应当的当成了&amp;ldquo;吃不着葡萄&amp;rdquo;的人，进而就是捍卫自己的文章是&amp;ldquo;高质量&amp;rdquo;的，怎么体现自己的高质量呢，首先是比你高明的人写的就是高质量。那么怎么显示自己的高明呢，首先就是语言上的贬低，那些影响园子氛围，比如&amp;ldquo;世界观比较特殊&amp;rdquo;、&amp;ldquo;小学生&amp;rdquo;、&amp;ldquo;小学语&lt;st1:personname productid="文" w:st="on"&gt;文&lt;/st1:personname&gt;老师&amp;rdquo;、&amp;ldquo;是否有资格&amp;rdquo;等等之类的词语出现了。我郁闷啊！难道水平不如你的人只能赞美你，用一些很恶心的话恭维就对了吗？人们对稿子提出质疑是对稿子质量的一种认可，不论谁对谁错、都是一种提高，文章存在就有很重要的意义。在别人提出质疑后，恼羞成怒，进而人身攻击，我觉得很无奈，同时也对作者行为体现出的素质深深的鄙视。&lt;/p&gt;&#xD;
&lt;p&gt;其实这是件小事情本不必如此当真，别人的素质怎么样是别人的事情。我只要决定是否鄙视就可以了，与我自身何干。问题是触景生情啊，在我和作者以笔&amp;ldquo;交流&amp;rdquo;的时候想到了一件小事情。前两天单位面试了几个人，在刚拿到简历的时候，看到一分很特别的简历〔当时还没有面试〕，一个今年要毕业的大学生，在他的技能描述中基本上罗列了所有的.net平台涉及的开发技术、框架，还有一大堆的头衔、xxx专家团队成员，xxx站长，xxx团队。当时很好奇，难道碰到天才了，应该说一个刚毕业的大学生，如果能达到这个程度的话，那这个人的真是前途无量啊。然后就上网看了一下这人的博客、还有那个xx技术站。博客的文章质量确实不错，其中的很多文章很有深度。当时自觉惭愧，因为好几个文章涉及的应用我都说不清楚。然后就是面试。几个问题下来，我感觉自己踏实了一点，为什么呢？因为他一开始给我印象是很强的，强的不像是一大学生。最后是上机，在可以查找资料的前提下，连续换了5个问题，题目的难度是由中等一直降到初级水平，结果居然都是以失败告终。在这说这个例子不是要暗喻什么，或贬低谁，或者抬高谁。只是很不能理解这个现象，在博客上那么多文章，在园子里都可以排进前200了，肯定是发布了很多高质量、高水准的文章，而且很多看文章确实是很白话，不想是整篇的摘抄。即使都是摘的、或者直接从书上拿来贴上，起码也应该知道思路或者基本的实现吧。但是很遗憾，他只是让简历上多了一串头衔，他是为了博客而博客。最后就有了一个问题：写博客写什么？我觉得可能有四种可能。&lt;/p&gt;&#xD;
&lt;p&gt;1、&amp;nbsp; 传道授业解惑；&lt;/p&gt;&#xD;
&lt;p&gt;2、&amp;nbsp; 学习生活笔记；&lt;/p&gt;&#xD;
&lt;p&gt;3、&amp;nbsp; 乐于助人；&lt;/p&gt;&#xD;
&lt;p&gt;4、&amp;nbsp; 装大尾狼；&lt;/p&gt;&#xD;
&lt;p&gt;不论出于何种可能，我都很感谢这些作者，他们很伟大！但是如果沾边第4种，我也很直白的告诉他们：你们也很可怜！&lt;/p&gt;&#xD;
&lt;p&gt;某人也对我博客上几个肤浅的问题作出评价，认为真是太肤浅了，没有资格来学习、质疑别人的东西。但是我觉得有知识没有肤浅之说，就说天气一把抓小小的例子：包括了正则表达式、模拟登录、页面数据分析、数据抓取 正是因为浅显、所有简单易懂。对学习这几点知识的人来说是个典型的例子。 相比于一些文章中，没有任何的技术点的随笔〔先不说文章是不是经过思考理解后自己写出来的〕。我觉得前者更有意义。&lt;/p&gt;&#xD;
&lt;p&gt;我作为一个做技术的人，一直认为&amp;ldquo;做技术是很单纯的事情！&amp;rdquo;，学习的过程就是&amp;ldquo;学习&amp;rdquo;、&amp;ldquo;思考&amp;rdquo;、&amp;ldquo;质疑&amp;rdquo;的过程。虽然现实中我知道自己的想法很理想，我的观点只能代表自己的行为准则，不能奢望别人也这么理想。在那我总是沉默，沉默不是因为无语，不是因为愤怒，而是因为喜悦。喜悦在有限的环境中，又一个人的技术生涯&amp;ldquo;死去&amp;rdquo;了。&lt;/p&gt;&#xD;
&lt;p&gt;最后贴出一段代码，某人已经详细的罗列了代码的实现，有一点我承认，前者&amp;ldquo;翻译&amp;rdquo;的内容是现在为止最好的解决思路，但是作者是否经过的深刻的思考，是否真正的理解它美在那。我的技术水平也没有到达多么高深的程度。无法完全颠覆性的整理出别的方案。但是把代码整理了一下贴出，应该也可以说明一个问题：&lt;strong&gt;理解意图后，它实现起来很简单&lt;/strong&gt;。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" style="width: 703px; height: 739px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; button4_Click(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt; busySpan;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt; idleSpan;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt; start ;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;曲线显示区间&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt; interval &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: #800080;"&gt;100&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt; radian &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: #800080;"&gt;0.0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;double&lt;/span&gt;&lt;span style="color: #000000;"&gt; step&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0.01&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (MessageBox.Show(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;现在开始让CPU傻掉吗?&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: #800000;"&gt;提示&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, MessageBoxButtons.YesNo, MessageBoxIcon.Question) &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; DialogResult.Yes)&lt;br /&gt;            {&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置优先级&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                System.Threading.Thread.CurrentThread.Priority &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Threading.ThreadPriority.Highest;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;曲线值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                    busySpan &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;double&lt;/span&gt;&lt;span style="color: #000000;"&gt;)((interval&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;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Math.Sin(Math.PI &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt; radian) &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: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;得到固定反向的曲线值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                    idleSpan&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;interval &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; busySpan;&lt;br /&gt;                    startTime &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Environment.TickCount;&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;控制曲线递增&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt; ((Environment.TickCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt; start) &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; busySpan)&lt;br /&gt;                    { &lt;br /&gt;                    }&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;控制曲线递减&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                    System.Threading.Thread.Sleep((&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;)idleSpan);&lt;br /&gt;                    radian &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; step; &lt;br /&gt;                    &lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;        }&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;执行效果：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/img/xingshao/201003/2010032615214019.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;至于控制多核的问题，因为环境问题，我还是不用写了，这一段才是这个题目的精华所在。可以说明一定问题了&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/1697059.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2010/03/26/1697059.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/02/25/1673677.html</id><title type="text">asp.net 开发 跬步篇〔3〕.net 邮件批量发送</title><summary type="text">Email 发送很神秘吗？不，很简单。刚刚使用过的一个功能，以前觉得很难似的，其实我们根本就不用理会那些难的东西，只要会“拿来”就好。.net很强大吗？是，很强大。</summary><published>2010-02-25T09:21:00Z</published><updated>2010-02-25T09:21:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/02/25/1673677.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/02/25/1673677.html"/><content type="html">&lt;p&gt;最近的一个项目中，有一个批量发送工资条的功能，貌似很神秘，其实很简单。以前就知道.net中各有一个专门实现Email发送的命名空间，刚好这次可以实践一下。在这又得赞美一下.net，哈哈真是太会办事了，简单实现。&lt;/p&gt;&#xD;
&lt;p&gt;废话不在多说，直接切入主题吧。功能的需求是每个月在生成工资报表后触发操作，可以批量发送到地址薄中的各个员工的邮箱中。所以我就写了一个发送邮件的class、使用跟的时候直接用就可以了。发送邮件的命名空间是System.Net.Mail，使用也很简单〔代码见下〕&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 发送邮件&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="mailHs"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;邮件集合hs[key:邮箱地址#收信人名称[代码]; value:邮箱内容]&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="smtpAuthUsername"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;发件人邮箱&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="smtpAuthPassword"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;邮箱密码&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Send(Hashtable mailHs, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; smtpAuthUsername, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; smtpAuthPassword, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; smtpServer, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; titel, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; subject)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; meg &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;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Empty;&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;定义传输协议 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        System.Net.Mail.SmtpClient smtp &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Net.Mail.SmtpClient(smtpServer);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置认证发件人 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        smtp.Credentials &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Net.NetworkCredential(smtpAuthUsername, smtpAuthPassword);&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;异步发送完成获取发送状态 &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);  &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        System.Net.Mail.MailMessage mail;&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; var &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; mailHs.Keys)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] list &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; var.Split(&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;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            {&lt;br /&gt;                mail &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Net.Mail.MailMessage();&lt;br /&gt;                mail.From &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Net.Mail.MailAddress(smtpAuthUsername, titel);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;回复人，回复人名 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                mail.ReplyTo &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;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Net.Mail.MailAddress(smtpAuthUsername, titel);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;收件人 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                mail.To.Add(list[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;]);&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;邮件优先级 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                mail.Priority &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Net.Mail.MailPriority.Normal;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;设置html邮件 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                mail.IsBodyHtml &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;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;标题 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                mail.Subject &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; subject;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;内容 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                mail.Body &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; mailHs[var].ToString();&lt;br /&gt;&lt;br /&gt;                smtp.Send(mail);&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;;, list[1]);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;                meg &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;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0} {1}邮件发送成功。&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, System.DateTime.Now.ToString(), list[&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;]);&lt;br /&gt;                WriteLog(meg);&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;            {&lt;br /&gt;                meg &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;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0} {1}邮件发送失败。&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, System.DateTime.Now.ToString(), list[&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;]);&lt;br /&gt;&lt;br /&gt;                WriteLog(meg);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;代码中，我用的是邮件的同步发送、还有一种异步发送，但是两种方式都有自己的应用场景。因为我的功能需求是批量发送工资条，邮箱中的每个人的信息是不同的。所以用同步发送，用hashtable 存储了地址和内容，然后一个循环，发送完成。如果使用跟的批量是一封邮件批量发送多多人，那么就可以用异步发送，这样的话性能上会有所提高，并且避免大数据量下死掉。异步的时候记得用这个回调：&lt;/p&gt;&#xD;
&lt;p align="left"&gt;smtp.SendCompleted += new System.Net.Mail.SendCompletedEventHandler(SendCompletedCallback);&amp;nbsp; &lt;/p&gt;&#xD;
&lt;p&gt;这样可以在这个方法中写一些后续的处理，比如发送结果的反馈。我的功能实现中是在一个log.txt文件中写入日志文件。这样在发送完成后，可以查看发送的结果。同步就不说了直接在完成后，写一个方法就ok了。简单又实用，真是居家必备。&lt;/p&gt;&#xD;
&lt;p&gt;分享了！欢迎交流！知识虽小，重在积累。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/xingshao/aggbug/1673677.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/xingshao/archive/2010/02/25/1673677.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/02/09/1666201.html</id><title type="text">驱驾ViewState利剑—压缩ViewState</title><summary type="text">两篇关于“ViewState”压缩的文章，很详细，贴在这，共同学习，虽然不是多么高深的问题，但是这是一般开发者不经常注意的问题。就当提醒一下吧。</summary><published>2010-02-09T00:56:00Z</published><updated>2010-02-09T00:56:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/02/09/1666201.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/02/09/1666201.html"/></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/02/05/1664464.html</id><title type="text">如何驾驭ViewState利剑</title><summary type="text">状态视图ViewState 是.net Web开发中一个让人又爱又恨的角色，它提供了一种单纯的编程方式，让我们更贴近程序。同时它的状态视图编码又让人“不寒而栗“。如何才能扬长避短，发挥它的长处，尽可能的降低状态视图对性能的影响，这是我们每一个asp.net都应该思考的问题，今天我抛砖..</summary><published>2010-02-05T07:35:00Z</published><updated>2010-02-05T07:35:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/02/05/1664464.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/02/05/1664464.html"/></entry><entry><id>http://www.cnblogs.com/xingshao/archive/2010/01/30/1659640.html</id><title type="text">编程“方便面”之用户控件</title><summary type="text">很喜欢 .net中用户控件、自定义控件的模式，在工作中也很喜欢将一些功能封装成形形色色的控件。分页问题应该是web开发中的一个常见问题，该文就是针对分页的问题，以用户控件的形式封装成一个分页管理者，以便分页功能的重用，没有什么高难的技术，但是解决具体分页问题很是好用，分享了！</summary><published>2010-01-30T01:49:00Z</published><updated>2010-01-30T01:49:00Z</updated><author><name>邢少</name><uri>http://www.cnblogs.com/xingshao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/xingshao/archive/2010/01/30/1659640.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/xingshao/archive/2010/01/30/1659640.html"/></entry></feed>
