<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_五年</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/24039/rss</id><updated>2012-01-07T10:59:15Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/24039/rss"/><entry><id>http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315941.html</id><title type="text">关于试题分析报告中命题难度和区分度计算的有关说明</title><summary type="text">关于试题分析报告中命题难度和区分度计算的有关说明1、命题的难度：难度是指试题与试卷难易程度的指标。（1）客观性试题的难度计算：通常用通过率来衡量。P=R/N&amp;#215;100%（P为通过率，R为答对或通过该题目的人，N为全体考生数）（2）主观性试题的难度计算：P=X/W&amp;#215;100%（P为通过率，X为被试在某一试题上的平均分，W为该题的满分）（3）整个试卷的难度计算：试卷的难度是指一份试卷的总体难易程度，其由试卷中每道题的难度决定。其计算办法为：将每道题目的难度与满分值相乘的积相加，然后将其总和除以试卷的满分值，所得的商即为整个试卷的难度。2、命题的区分度：区分都是指测验试题对考生实际水</summary><published>2012-01-07T10:59:00Z</published><updated>2012-01-07T10:59:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315941.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315941.html"/><content type="html">&lt;div &gt;&#xD;
&lt;p &gt;关于试题分析报告中命题难度和区分度计算的有关说明&lt;/p&gt;&#xD;
&lt;p &gt;&lt;/p&gt;&#xD;
&lt;p &gt;1、命题的难度：难度是指试题与试卷难易程度的指标。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p &gt;（1）客观性试题的难度计算：通常用通过率来衡量。&lt;/p&gt;&#xD;
&lt;p &gt;P=R/N&amp;times;100%（P为通过率，R为答对或通过该题目的人，N为全体考生数）&lt;/p&gt;&#xD;
&lt;p &gt;（2）主观性试题的难度计算：&lt;/p&gt;&#xD;
&lt;p &gt;P=X/W&amp;times;100%（P为通过率，X为被试在某一试题上的平均分，W为该题的满分）&lt;/p&gt;&#xD;
&lt;p &gt;（3）整个试卷的难度计算：试卷的难度是指一份试卷的总体难易程度，其由试卷中每道题的难度决定。其计算办法为：将每道题目的难度与满分值相乘的积相加，然后将其总和除以试卷的满分值，所得的商即为整个试卷的难度。&lt;/p&gt;&#xD;
&lt;p &gt;&lt;/p&gt;&#xD;
&lt;p &gt;2、命题的区分度：区分都是指测验试题对考生实际水平的区分程度，其取值范围介于-1.00和+1.00之间。&lt;/p&gt;&#xD;
&lt;p &gt;（1）客观性试题的区分度计算：&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p &gt;D=Ph-Pl（D为区分度，&amp;nbsp;Ph为高分组通过率，Pl为低分组通过率。注：先将被试者依照总分从高到低排列，然后将总分最高的27%和最低的27%的被试分别定为高分组和低分组。）&lt;/p&gt;&#xD;
&lt;p &gt;（2）主观性试题的区分度计算：&lt;/p&gt;&#xD;
&lt;p &gt;D=（XH-XL）/N(H-L)（XH为高分组该题总分，&amp;nbsp;XL为低分组该题总分，H为该题最高分，L为该题最低分，N为考生总人数的25%）&lt;/p&gt;&#xD;
&lt;p &gt;（3）整个试卷的区分度计算：试卷的区分度是指一份试卷总体对学生的区分程度。其计算办法为：将每道题目的区分度与满分值相乘的积相加，然后将其总和除以试卷的满分值，所得的商即为整个试卷的区分度。&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2315941.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315941.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315936.html</id><title type="text">win32 api for .net</title><summary type="text">http://pinvoke.net</summary><published>2012-01-07T10:56:00Z</published><updated>2012-01-07T10:56:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315936.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315936.html"/><content type="html">&lt;p&gt;&lt;a href="http://pinvoke.net/"&gt;http://pinvoke.net&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2315936.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2012/01/07/2315936.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2012/01/01/2309725.html</id><title type="text">OAuth2.0</title><summary type="text">新浪http://code.google.com/p/oauth-dot-net/http://www.cnblogs.com/mainz/archive/2010/12/01/1893718.htmlhttp://www.cnblogs.com/prolifes/articles/2263033.htmlhttp://www.cnblogs.com/shiningrise/archive/2012/01/01/2309725.htmlQQ:http://qqconnect.codeplex.com/https://github.com/shiningrise/dotnetopenid</summary><published>2012-01-01T15:59:00Z</published><updated>2012-01-01T15:59:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2012/01/01/2309725.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2012/01/01/2309725.html"/><content type="html">&lt;p&gt;新浪&lt;/p&gt;&#xD;
&lt;p&gt;http://code.google.com/p/oauth-dot-net/&lt;/p&gt;&#xD;
&lt;p&gt;http://www.cnblogs.com/mainz/archive/2010/12/01/1893718.html&lt;/p&gt;&#xD;
&lt;p&gt;http://www.cnblogs.com/prolifes/articles/2263033.html&lt;/p&gt;&#xD;
&lt;p&gt;http://www.cnblogs.com/shiningrise/archive/2012/01/01/2309725.html&lt;/p&gt;&#xD;
&lt;p&gt;QQ:&lt;/p&gt;&#xD;
&lt;p&gt;http://qqconnect.codeplex.com/&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;https://github.com/shiningrise/dotnetopenid&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2309725.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2012/01/01/2309725.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/21/2296411.html</id><title type="text">Log4net数据表</title><summary type="text">USE [ASPNETDB]GO/****** 对象: Table [dbo].[Log] 脚本日期: 12/21/2011 22:41:53 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[Log](	[ID] [int] IDENTITY(1,1) NOT NULL,	[Date] [datetime] NOT NULL,	[Thread] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,	[Level...</summary><published>2011-12-21T14:28:00Z</published><updated>2011-12-21T14:28:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/21/2296411.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/21/2296411.html"/><content type="html">&lt;div &gt;&#xD;
&lt;pre &gt;USE [ASPNETDB]&#xD;
GO&#xD;
/****** 对象:  Table [dbo].[Log]    脚本日期: 12/21/2011 22:41:53 ******/&#xD;
SET ANSI_NULLS ON&#xD;
GO&#xD;
SET QUOTED_IDENTIFIER ON&#xD;
GO&#xD;
SET ANSI_PADDING ON&#xD;
GO&#xD;
CREATE TABLE [dbo].[Log](&#xD;
	[ID] [int] IDENTITY(1,1) NOT NULL,&#xD;
	[Date] [datetime] NOT NULL,&#xD;
	[Thread] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[Level] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[Logger] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[UserName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[ControlName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[ActionName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[Message] [text] COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[IP] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[MachineName] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[Browser] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[Location] [text] COLLATE Chinese_PRC_CI_AS NULL,&#xD;
	[Exception] [text] COLLATE Chinese_PRC_CI_AS NULL&#xD;
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]&#xD;
&#xD;
GO&#xD;
SET ANSI_PADDING OFF&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--BufferSize为缓冲区大小，只有日志记录超设定值才会一块写入到数据库--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;bufferSize value="10" /&amp;gt;&amp;lt;!&amp;mdash;或写为&amp;lt;param name="BufferSize" value="10" /&amp;gt;--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--引用--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--连接数据库字符串--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;connectionString value="data source=.;initial catalog=Test;integrated security=false;persist security info=True;User ID=sa;Password=;" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--插入到表Log--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Operator],[Message],[ActionType],[Operand],[IP],[MachineName],[Browser],[Location],[Exception]) VALUES (@log_date, @thread, @log_level, @logger,@operator, @message,@action_type,@operand,@ip,@machineName,@browser,@location,@exception)" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;日志记录时间，RawTimeStampLayout为默认的时间输出格式 --&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@log_date" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="DateTime" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="log4net.Layout.RawTimeStampLayout" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--线程号--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@thread" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;长度不可以省略，否则不会输出--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="100" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%thread" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--日志等级--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@log_level" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="100" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%level" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--日志记录类名称--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@logger" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="200" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%logger" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--操作者。这个是自定义的输出字段，使用重新实现的布局器ReflectionLayout --&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@operator" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;设置为Int32时只有bufferSize的 value&amp;lt;="1"才正确输出，没有找出原因。--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="Int16" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{Operator}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--操作对象--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@operand" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="300" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{Operand}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;IP地址--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@ip" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="20" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{IP}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--机器名--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@machineName" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="100" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{MachineName}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--浏览器--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@browser" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="50" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{Browser}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;日志消息--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@message" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="3000" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{Message}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--动作类型--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@action_type" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="Int16" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%property{ActionType}" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;记录日志的位置--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@location" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="2000" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;conversionPattern value="%location" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/layout&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!&amp;mdash;异常信息。ExceptionLayout 为异常输出的默认格式--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;parameterName value="@exception" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;dbType value="String" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;size value="4000" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;layout type="log4net.Layout.ExceptionLayout" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/parameter&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/appender&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;注意：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;向表中输出的字段不能多于数据表本身字段，而反之则可以，但这些多余字段一定使其可以为空，否则便写不到数据库；&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;输出字段的类型一定是对应数据表字段数据类型可以隐式转换的，而且长度也不能超过，否则也不能写入；&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;数据表字段设置尽量可以为空，这样可以避免一条日志记录存在空数据导致后面的日志都记录不了。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;4.3&amp;lt;logger&amp;gt;的配置&lt;br style="margin: 0px; padding: 0px;" /&gt;在配置文件&amp;lt;appender&amp;gt;中的配置好了输出的介质，格式，过滤方式，还要定义日志对象&amp;lt;logger&amp;gt;。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;在框架的体系里，所有的日志对象都是根日志(root logger)的后代。 因此如果一个日志对象没有在配置文件里显式定义，则框架使用根日志中定义的属性。在&amp;lt;root&amp;gt;标签里，可以定义level级别值和Appender的列表。如果没有定义LEVEL的值，则缺省为DEBUG。可以通过&amp;lt;appender-ref&amp;gt;标签定义日志对象使用的Appender对象。&amp;lt;appender-ref&amp;gt;声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说，子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定&amp;lt;logger&amp;gt;标签的additivity属性为false而改变。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;root&amp;gt;不显式申明时使用默认的配置。我觉得在使用时不定义&amp;lt;root&amp;gt;,自定义多个&amp;lt;logger&amp;gt;,在程序中记录日志时直接使用&amp;lt;logger&amp;gt;的name来查找相应的&amp;lt;logger&amp;gt;，这样更灵活一些。例如：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;!--同时写两个文件和数据库--&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;logger name="ReflectionLayout"&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;level value="DEBUG"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;appender-ref ref="HashtableLayout"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;appender-ref ref="ReflectionLayout"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;appender-ref ref="ADONetAppender"/&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&amp;lt;/logger&amp;gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;4.4关联配置文件&lt;br style="margin: 0px; padding: 0px;" /&gt;log4net默认关联的是应用程序的配置文件App.config(BS程序是Web.config)，可以使用程序集自定义属性来进行设置。下面来介绍一下这个自定义属性：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;log4net.Config.XmlConifguratorAttribute。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;XmlConfiguratorAttribute有3个属性：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;ConfigFile： 配置文件的名字，文件路径相对于应用程序目录&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;(AppDomain.CurrentDomain.BaseDirectory)。ConfigFile属性不能和ConfigFileExtension属性一起使用。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;ConfigFileExtension： 配置文件的扩展名，文件路径相对于应用程序的目录。ConfigFileExtension属性不能和ConfigFile属性一起使用。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;Watch： 如果将Watch属性设置为true，就会监视配置文件。当配置文件发生变化的时候，就会重新加载。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;如果ConfigFile和ConfigFileExtension都没有设置，则使用应用程序的配置文件App.config（Web.config）。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;可以在项目的AssemblyInfo.cs文件里添加以下的语句：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//监视默认的配置文件，App.exe.config&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;[assembly: log4net.Config.XmlConfigurator(Watch = true)]&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//监视配置文件，App.exe.log4net。&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;[assembly: log4net. Config.XmlConfigurator(ConfigFileExtension = "log4net", Watch = true)]&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//使用配置文件log4net.config，不监视改变。注意log4net.config文件的目录，BS程序在站点目录//下，CS则在应用程序启动目录下，如调试时在\bin\Debug下，一般将文件属性的文件输出目录调为//始终复制即可&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;[assembly: log4net. Config.XmlConfigurator(ConfigFile = "log4net.config")]&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//使用配置文件log4net.config，不监视改变&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;[assembly: log4net. Config.XmlConfigurator()]&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;也可以在Global.asax的Application_Start里或者是Program.cs中的Main方法中添加，注意这里一定是绝对路径，如下所示：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//这是在BS程序下，使用自定义的配置文件log4net.xml，使用Server.MapPath("~") +&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;a style="margin: 0px; padding: 0px;"&gt;//@"\log4net.xml&lt;/a&gt;&amp;rdquo;来取得路径。 \log4net.xml为相对于站点的路径&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;// ConfigureAndWatch()相当于Configure(Watch = true)&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;log4net.Config.XmlConfigurator.ConfigureAndWatch(&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;new System.IO.FileInfo(Server.MapPath("~") + @"\log4net.xml"));&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//这是在CS程序下，可以用以下方法获得：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;string assemblyFilePath = Assembly.GetExecutingAssembly().Location;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;string configFilePath = assemblyDirPath + "&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;a style="margin: 0px; padding: 0px; color: black; text-decoration: underline;"&gt;\\log4net.xml&lt;/a&gt;";&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;log4net.Config.XmlConfigurator.ConfigureAndWatch(&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;new FileInfo(configFilePath));&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;或直接使用绝对路径：&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;//使用自定义的配置文件，直接绝对路径为：c:/log4net.config&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(@"c:/log4net.config"));&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 5px auto; padding: 0px; text-indent: 0px;"&gt;转自：&lt;a href="http://www.cnblogs.com/neekerss/archive/2011/01/04/1925171.html"&gt;http://www.cnblogs.com/neekerss/archive/2011/01/04/1925171.html&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2296411.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/21/2296411.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/17/2291268.html</id><title type="text">使用 HttpModel与现有基于共享登录信息( Cookie )的网站进行集成</title><summary type="text">/**************************************************************************** * 功能说明： * 1、使用 HttpModel与现有基于共享登录信息( Cookie )的网站进行集成 * 2、用户自动登录，自动注册，，延时注册， * 3、同步退出 * * 使用方法： * 见示例web.config * * 设计编码：shiningrise@gmail.com * **********************************************************************...</summary><published>2011-12-17T10:52:00Z</published><updated>2011-12-17T10:52:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/17/2291268.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/17/2291268.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;***************************************************************************&lt;br /&gt; * 功能说明：&lt;br /&gt; *  1、使用 HttpModel与现有基于共享登录信息( Cookie )的网站进行集成&lt;br /&gt; *  2、用户自动登录，自动注册，，延时注册，&lt;br /&gt; *  3、同步退出&lt;br /&gt; * &lt;br /&gt; * 使用方法：&lt;br /&gt; *  见示例web.config&lt;br /&gt; * &lt;br /&gt; *  设计编码：shiningrise@gmail.com&lt;br /&gt; *  &lt;br /&gt;***************************************************************************&lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Web;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Web.Security;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; wojilu.Open;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; wojilu.AuthenticationModule&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; AuthenticationModule : System.Web.IHttpModule&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Dispose()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;         throw new NotImplementedException();&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Init(HttpApplication context)&lt;br /&gt;        {&lt;br /&gt;            context.BeginRequest += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler(Application_BeginRequest);&lt;br /&gt;            context.EndRequest += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler(Application_EndRequest);&lt;br /&gt;            context.AuthenticateRequest += &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; EventHandler(context_AuthenticateRequest);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; context_AuthenticateRequest(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            HttpApplication application = sender &lt;span style="color: #0000ff;"&gt;as&lt;/span&gt; HttpApplication;&lt;br /&gt;            HttpContext context = application.Context;&lt;br /&gt;            HttpRequest req = context.Request;&lt;br /&gt;&lt;br /&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;            HttpResponse response = context.Response;&lt;br /&gt;&lt;br /&gt;            OpenService openService = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; OpenService();&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (req.IsAuthenticated)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (openService.UserIsLogin(context) != &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; username = context.User.Identity.Name;&lt;br /&gt;                    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;        response.Write("username=" + username);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (openService.UserIsRegister(username, context))&lt;br /&gt;                    {&lt;br /&gt;                        openService.UserLogin(username, context);&lt;br /&gt;                        &lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;.UpdateUserProfile(username);&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; userPwd = GetRandomNumberString(&lt;span style="color: #800080;"&gt;16&lt;/span&gt;);&lt;br /&gt;                        &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; userEmail = &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0}@lcsyzx.cn&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, username);&lt;br /&gt;                        openService.UserRegister(username, userPwd, userEmail, &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;home,blog,photo,microblog,friend,visitor,forumpost,about,feedback,share&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;       response.Write(" IsAuthenticated = false ");&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                openService.UserLogout(context);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Application_BeginRequest(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Application_EndRequest(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;HttpApplication application = sender as HttpApplication;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;HttpContext context = application.Context;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;HttpResponse response = context.Response;&lt;br /&gt;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    response.Write("这是来自自定义HttpModule中有EndRequest");&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #808080;"&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; 更新 Profile 的真实名到 wojilu&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #808080;"&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: #808080;"&gt;&amp;lt;param name="usr"&amp;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: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; UpdateUserProfile(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; username)&lt;br /&gt;        {&lt;br /&gt;            UserProfile userProfile = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; UserProfile();&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;(UserProfile)ProfileBase.Create(usr.UserName, true);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            userProfile.Initialize(username, &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;);&lt;br /&gt;            wojilu.Members.Users.Domain.User usr = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; OpenService().getUserByName(username);&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;UserName  LoginUserName  FullName  UserGroup  CurJi  CurBh  CurBnbh&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (userProfile.UserGroup == &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;br /&gt;                usr.RealName = &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Format(&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;, userProfile.CurJi, userProfile.CurBh, userProfile.FullName);&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (userProfile.UserGroup == &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;br /&gt;                usr.RealName = userProfile.FullName;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;                usr.RealName = &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Format(&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;, userProfile.UserGroup, userProfile.FullName);&lt;br /&gt;&lt;br /&gt;            usr.Pwd = GetRandomNumberString(&lt;span style="color: #800080;"&gt;16&lt;/span&gt;);&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (usr.Name != &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;admin&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;)&lt;br /&gt;                usr.update();&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    db.update(usr, "RealName");&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;    db.update(usr, "Pwd");&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #808080;"&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: #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: #808080;"&gt;&amp;lt;param name="int_NumberLength"&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: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; GetRandomNumberString(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; int_NumberLength)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt; onlyNumber = &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;            Random random = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Random();&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; strings = &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;123456789&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!onlyNumber) strings += &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;abcdefghjkmnpqrstuvwxyz&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;char&lt;/span&gt;[] chars = strings.ToCharArray();&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; returnCode = &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; i &amp;lt; int_NumberLength; i++)&lt;br /&gt;                returnCode += chars[random.Next(&lt;span style="color: #800080;"&gt;0&lt;/span&gt;, chars.Length)].ToString();&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; returnCode;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2291268.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/17/2291268.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/13/2286846.html</id><title type="text">ajax return不能少，不然不能激发ajax函数</title><summary type="text">被dwz ajax折腾了一天，终于能用了，@using (Html.BeginForm(&amp;quot;Edit&amp;quot;, &amp;quot;XuenianXueqi&amp;quot;, FormMethod.Post, new { onsubmit = &amp;quot;return validateCallback(this, dialogAjaxDone)&amp;quot; })) ，return不能少，不然不能激发ajax函数submit与onsubmit发生顺序:onsubmit -&amp;gt; submit1.阻止表单提单：&amp;lt;script&amp;gt;function submitFun(){//逻辑判断re</summary><published>2011-12-13T13:34:00Z</published><updated>2011-12-13T13:34:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/13/2286846.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/13/2286846.html"/><content type="html">&lt;p&gt;被dwz ajax折腾了一天，终于能用了，@using (Html.BeginForm("Edit", "XuenianXueqi", FormMethod.Post, new { onsubmit = "return validateCallback(this, dialogAjaxDone)" })) ，return不能少，不然不能激发ajax函数&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;submit与onsubmit&lt;/strong&gt;&lt;br /&gt;发生顺序:onsubmit -&amp;gt; submit&lt;/p&gt;&#xD;
&lt;p&gt;1.阻止表单提单：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&amp;lt;script&amp;gt;&lt;br /&gt;function submitFun()&lt;br /&gt;{&lt;br /&gt;//逻辑判断&lt;br /&gt;return true; //允许表单提交&lt;br /&gt;//逻辑判断&lt;br /&gt;return false;//不允许表单提交&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;form onsubmit=&amp;rdquo; reture submitFun();&amp;rdquo;&amp;gt; //注意此处不能写成 onsubmit=&amp;rdquo;submitFun();&amp;rdquo; 否则将表单总是提交的&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.onsubmit()与submit() ：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span &gt;&amp;lt;script&amp;gt;&lt;br /&gt;function fun()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; alert("form_submit");&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;form onsubmit="fun()"&amp;gt;&lt;br /&gt;&amp;lt;input type="submit" id="aaa" value="submit"&amp;gt;&amp;nbsp;&amp;nbsp; &amp;lt;!--能弹出form_submit--&amp;gt;&lt;br /&gt;&amp;lt;input type="button" id="bbb" value="onclick_submit" onclick="document.forms[0].submit()"&amp;gt;&lt;br /&gt;&amp;lt;!-- &lt;br /&gt;表单会提交，但是不会执行fun() 原因是 onsubmit事件不能通过此种方式触发（在IE环境）&lt;br /&gt;直接用脚本documetn.formName.submit()提交表单是不会触发表单的onsubmit()事件的&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type="button" id="bb1" value="onclick_onsubmit" onclick="document.forms[0].onsubmit()"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--会触发fun()函数--&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;http://www.okajax.com/a/200811/1124R012008.html&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2286846.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/13/2286846.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282929.html</id><title type="text">开源日志组件ELMAH</title><summary type="text">开源日志组件ELMAHhttp://www.hake.cc/a/biancheng/net/2011/0913/12436.htmlhttp://code.google.com/p/elmah/</summary><published>2011-12-09T15:26:00Z</published><updated>2011-12-09T15:26:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282929.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282929.html"/><content type="html">&lt;p&gt;开源日志组件ELMAH&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.hake.cc/a/biancheng/net/2011/0913/12436.html"&gt;http://www.hake.cc/a/biancheng/net/2011/0913/12436.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://code.google.com/p/elmah/"&gt;http://code.google.com/p/elmah/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2282929.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282929.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282920.html</id><title type="text">oj算法</title><summary type="text"/><published>2011-12-09T15:16:00Z</published><updated>2011-12-09T15:16:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282920.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282920.html"/><content type="html">&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/20480/2011120923142986.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2282920.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/09/2282920.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278404.html</id><title type="text">一个用于整体移动文件夹的方法，简练实用</title><summary type="text">http://blog.csdn.net/guoxubin2005/article/details/4154095一个用于整体移动文件夹的方法，简练实用： public static void CopyDirectory(string sourceDirName, string destDirName) { if (!Directory.Exists(destDirName)) { Directory.CreateDirectory(destDirName); File.SetAttributes(destDirName, File.GetAttributes(sourceDirName));</summary><published>2011-12-06T11:41:00Z</published><updated>2011-12-06T11:41:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278404.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278404.html"/><content type="html">&lt;p&gt;&lt;a href="http://blog.csdn.net/guoxubin2005/article/details/4154095"&gt;http://blog.csdn.net/guoxubin2005/article/details/4154095&lt;/a&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;p&gt;public static void CopyDirectory(string sourceDirName, string destDirName)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!Directory.Exists(destDirName))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Directory.CreateDirectory(destDirName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.SetAttributes(destDirName, File.GetAttributes(sourceDirName));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (destDirName[destDirName.Length - 1] != Path.DirectorySeparatorChar)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destDirName = destDirName + Path.DirectorySeparatorChar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string[] files = Directory.GetFiles(sourceDirName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (string file in files)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.Copy(file, destDirName + Path.GetFileName(file), true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.SetAttributes(destDirName + Path.GetFileName(file), FileAttributes.Normal);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string[] dirs = Directory.GetDirectories(sourceDirName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (string dir in dirs)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CopyDirectory(dir, destDirName + Path.GetFileName(dir));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2278404.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278404.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278399.html</id><title type="text">FileSystemWatch使用示例</title><summary type="text">MSDN上一段关于使用FileSystemWatch类的例子，今天写的一个功能使用到监视文件系统的应用，看到这段代码，很有启发，留作纪念。代码如下：Public Class Watcher{ public static void Main() { Run(); } [PermissionSet(SecurityAction.Demand, Name=&amp;quot;FullTrust&amp;quot;)] public static void Run() { string[] args = System.Environment.GetCommandLineArgs(); // If a director</summary><published>2011-12-06T11:29:00Z</published><updated>2011-12-06T11:29:00Z</updated><author><name>五年</name><uri>http://www.cnblogs.com/shiningrise/</uri></author><link rel="alternate" href="http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278399.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278399.html"/><content type="html">&lt;p&gt;MSDN上一段关于使用FileSystemWatch类的例子，今天写的一个功能使用到监视文件系统的应用，看到这段代码，很有启发，留作纪念。代码如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Public Class Watcher&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [PermissionSet(SecurityAction.Demand, Name="FullTrust")]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Run()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string[] args = System.Environment.GetCommandLineArgs();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If a directory is not specified, exit program.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(args.Length != 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Display the proper way to call the program.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Usage: Watcher.exe (directory)");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a new FileSystemWatcher and set its properties.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileSystemWatcher watcher = new FileSystemWatcher();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Path = args[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Watch for changes in LastAccess and LastWrite times, and &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the renaming of files or directories. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | NotifyFilters.FileName | NotifyFilters.DirectoryName;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #ff0000;"&gt;watcher.IncludeSubdirectories = True&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&lt;strong&gt;; // 这个属性用于指定是否监视指定目录中的子目录，很有用&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;// Only watch text files.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Filter = "*.*";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add event handlers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Changed += new FileSystemEventHandler(OnChanged);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Created += new FileSystemEventHandler(OnChanged);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Deleted += new FileSystemEventHandler(OnChanged);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.Renamed += new RenamedEventHandler(OnRenamed);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Begin watching.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; watcher.EnableRaisingEvents = true;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for the user to quit the program.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Press /'q/' to quit the sample.");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(Console.Read()!='q');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Define the event handlers.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void OnChanged(object source, FileSystemEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify what is done when a file is changed, created, or deleted.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File: " +&amp;nbsp; e.FullPath + " " + e.ChangeType);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static void OnRenamed(object source, RenamedEventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Specify what is done when a file is renamed.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;转自：&lt;a href="http://blog.csdn.net/guoxubin2005/article/details/4154095"&gt;http://blog.csdn.net/guoxubin2005/article/details/4154095&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/shiningrise/aggbug/2278399.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/shiningrise/archive/2011/12/06/2278399.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
