<?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/27927/rss</id><updated>2010-05-21T15:46:51Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/27927/rss"/><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/05/21/1741294.html</id><title type="text">log4net+spring.net+Nhibernate 内部异常捕捉问题</title><summary type="text">当使用log4net+spring.net+Nhibernate组合的时候，如果发生异常，经过层层传递，以及Spring对异常的包装，如果直接使用 LogManager.GetLogger(typeof(_Default)).Error(ex.Message, ex);来记录异常信息的话，通常记录不了，猜测的原因（并没有深究。。。）：ex有内部异常，且这个异常经过了nhibernate和sprin...</summary><published>2010-05-21T15:47:00Z</published><updated>2010-05-21T15:47:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/05/21/1741294.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/05/21/1741294.html"/><content type="html">&lt;p&gt;当使用log4net+spring.net+Nhibernate组合的时候，如果发生异常，经过层层传递，以及Spring对异常的包装，如果直接使用&lt;/p&gt;&#xD;
&lt;p&gt;LogManager.GetLogger(typeof(_Default)).Error(ex.Message, ex);&lt;/p&gt;&#xD;
&lt;p&gt;来记录异常信息的话，通常记录不了，猜测的原因（并没有深究。。。）：ex有内部异常，且这个异常经过了nhibernate和spring包装之后，log4net无法从内部堆栈中找出最原始的异常，所以导致log4net记录不了这个异常，那么我们就采用以下形式记录：&lt;/p&gt;&#xD;
&lt;p&gt;LogManager.GetLogger(typeof(_Default)).Error(ex.Message, ex.InnerException == null ? ex : ex.InnerException);&lt;/p&gt;&#xD;
&lt;p&gt;就能解决这个问题！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1741294.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/05/21/1741294.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/05/21/1740849.html</id><title type="text">在log4net中控制nhibernate输出</title><summary type="text">通常，如果nhibernate和log4net同时出现的话，nhibernate通常会自动用log4net输出信息，这样的话，会和通过应用程序输出的日志混杂在一起。因为nhibernate会默认使用root下的appender。但是，我们可以通过配置其它的logger来控制nihibernate的输出，如下配置：（这个配置是log4net连接到sql2008的一个配置文件）&amp;lt;?xml ver...</summary><published>2010-05-21T05:36:00Z</published><updated>2010-05-21T05:36:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/05/21/1740849.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/05/21/1740849.html"/><content type="html">&lt;p&gt;通常，如果nhibernate和log4net同时出现的话，nhibernate通常会自动用log4net输出信息，这样的话，会和通过应用程序输出的日志混杂在一起。因为nhibernate会默认使用root下的appender。但是，我们可以通过配置其它的logger来控制nihibernate的输出，如下配置：（这个配置是log4net连接到sql2008的一个配置文件）&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;configSections&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/configSections&amp;gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;lt;appSettings/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;connectionStrings/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/system.web&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;log4net&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;root&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;level value="ALL" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender-ref ref="ADONetAppender" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/root&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red"&gt;&amp;lt;!--Nhibernate的日志配置开始--&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;lt;!--additivity是 子Logger 是否继承 父Logger 的 输出源（appender） 的标志位。具体说，默认情况下子Logger会继承父Logger的appender，&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 也就是说子Logger会在父Logger的appender里输出。若是additivity设为false，则子Logger只会在自己的appender里输出，&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 而不会在父Logger的appender里输出。 --&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;logger name="&lt;span style="color: #ff0000"&gt;NHibernate&lt;/span&gt;&lt;span style="color: #ff0000"&gt;"&amp;nbsp;additivity="false&lt;/span&gt;"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;level value="WARN" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender-ref ref="ADONetAppender" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/logger&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;logger name="&lt;span style="color: red"&gt;NHibernate.S&lt;/span&gt;&lt;span style="color: #ff0000"&gt;QL&lt;/span&gt;&lt;span style="color: #ff0000"&gt;"&amp;nbsp;additivity="false&lt;/span&gt;"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;level value="ERROR" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender-ref ref="ADONetAppender" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/logger&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red"&gt;&amp;lt;!--Nhibernate的日志配置结束--&amp;gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;bufferSize value="0" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionString value="server=localhost;database=SummerData;user id=sa;password=P@ssw0rd;Connect Timeout=15;" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;commandText value="INSERT INTO LogMessage ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameterName value="@log_date" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dbType value="DateTime" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.RawTimeStampLayout" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameterName value="@thread" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dbType value="String" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size value="255" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;conversionPattern value="%thread" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameterName value="@log_level" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dbType value="String" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size value="50" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;conversionPattern value="%level" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameterName value="@logger" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dbType value="String" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size value="255" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;conversionPattern value="%logger" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameterName value="@message" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dbType value="String" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size value="4000" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;conversionPattern value="%message" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/layout&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameterName value="@exception" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dbType value="String" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;size value="2000" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.ExceptionLayout" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/appender&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/log4net&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1740849.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/05/21/1740849.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/05/09/1731162.html</id><title type="text">VMWare host 32位 guest 64位</title><summary type="text">由于sharepoint2010需要64位环境，只能寄希望于虚拟机了。可惜vpc不支持64位guest os，hyper-v只能运行在win2008R2上，而我的host是win7的32位系统。那么就用回VMWare了。　　下载VMWare7.0之后安装，一阵折腾，顺利的装上64位的win2008R2，继续装好sharepoint2010。可是过程中发现重大问题，vmware经常会卡死，导致hos...</summary><published>2010-05-09T08:16:00Z</published><updated>2010-05-09T08:16:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/05/09/1731162.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/05/09/1731162.html"/><content type="html">&lt;p&gt;由于sharepoint2010需要64位环境，只能寄希望于虚拟机了。可惜vpc不支持64位guest os，hyper-v只能运行在win2008R2上，而我的host是win7的32位系统。那么就用回VMWare了。&lt;/p&gt;&#xD;
&lt;p&gt;下载VMWare7.0之后安装，一阵折腾，顺利的装上64位的win2008R2，继续装好sharepoint2010。可是过程中发现重大问题，vmware经常会卡死，导致host系统失去响应！而且guest系统感觉效率非常差，慢的一塌糊涂！然后就尝试调整cpu核心数量以及虚拟化引擎，依然如故！&lt;/p&gt;&#xD;
&lt;p&gt;这时，我考虑是不是因为我的host是32位操作系统，导致vmware这么慢呢？因为以前用过一段时间vmware，感觉它的速度还是非常快的。干脆，趁周末玩把大的！把host系统换成win7 64位的！&lt;/p&gt;&#xD;
&lt;p&gt;又是一阵折腾，host也变成64位操作系统，把vmware开启，运行虚拟机，哇塞，一切正常了！再也不卡了。。。。。。。&lt;/p&gt;&#xD;
&lt;p&gt;流水账一篇，备忘而已。。。。。。。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1731162.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/05/09/1731162.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/05/02/1725848.html</id><title type="text">QuickPart Permission问题</title><summary type="text">背景介绍：　　当使用QuickPart部署Webpart的时候，我们可以通过wspbuilder将QuickPart打包进wsp，并且通过feature直接部署webpart，这样QuickPart既不需要安装到GAC，也不需要在Sharepoint中添加部件时候重新再选择一次所需控件了。我把QuickPart放在80目录的bin下，如图：但是，如果通过wspbuilder生成的wsp然后再dep...</summary><published>2010-05-01T16:50:00Z</published><updated>2010-05-01T16:50:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/05/02/1725848.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/05/02/1725848.html"/><content type="html">&lt;p&gt;背景介绍：&lt;/p&gt;&#xD;
&lt;p&gt;当使用QuickPart部署Webpart的时候，我们可以通过wspbuilder将QuickPart打包进wsp，并且通过feature直接部署webpart，这样QuickPart既不需要安装到GAC，也不需要在Sharepoint中添加部件时候重新再选择一次所需控件了。我把QuickPart放在80目录的bin下，如图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/hollisyao/122447/r_捕获.PNG" width="286" height="293" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;但是，如果通过wspbuilder生成的wsp然后再deploy，在页面上添加部件的时候，会报错，&amp;#8220;请求失败&amp;#8221;PermissionCheck异常等信息。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;尝试解决：&lt;/p&gt;　　 &#xD;
&lt;p&gt;既然是没有权限，那么我们最简单直接的方式就是把信任等级改成这样：&amp;lt;trust level="Full" originUrl="" /&amp;gt;，但是这样会带来很多安全隐患，不推荐这样做。有没有其它的解决方式呢？我们来研究下wsp包的生成和部署方式。&lt;/p&gt;&#xD;
&lt;p&gt;WspBuilder生成wsp包的时候，会把相应dll申请的权限打包进wsp包中，等到deploy这个wsp包的时候，wspbuilder就会修改站点下的Web.Config文件，将信任等级修改如下：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;trust level="WSS_Custom" originUrl="" /&amp;gt;，然后WSS_Custom就会指向一个由wspbuilder生成的新的策略文件（路径在web.config里面能够找到），在这个策略文件里面定义了dll、webpart等的权限。&lt;/p&gt;&#xD;
&lt;p&gt;那么wspbuilder怎么知道dll需要使用哪些权限呢，是通过读取dll的程序集信息获取的。在我们dll的项目文件里面都会有AssemblyInfo.cs文件，在这里会记载程序集的版本信息，我们也可以在这里添加程序集所需要使用的信息。大致判断出，QuickPart是因为搜索了某些没有目录的权限导致的，那么我给QuickPart源代码的AssemblyInfo.cs文件添加权限信息，在这个文件的最后，我添加这么一行：&lt;/p&gt;&#xD;
&lt;p&gt;[assembly: FileIOPermission(SecurityAction.RequestMinimum, Unrestricted=true)]&lt;/p&gt;&#xD;
&lt;p&gt;这句话的含义是：文件读取权限没有限制。关于FileIOPermissionAttribute可以自行查询帮助。&lt;/p&gt;&#xD;
&lt;p&gt;通过这样设置之后，重新编译QuickPart，生成wsp包，部署（之前先卸载并删除已部署的wsp），经过测试仍然不行，那么我在QuickPart的AssemblyInfo.cs文件的最后再添加两行：&lt;/p&gt;&#xD;
&lt;p&gt;[assembly: SharePointPermission(SecurityAction.RequestMinimum, Unrestricted=true)]&lt;/p&gt;&#xD;
&lt;p&gt;[assembly: SecurityPermission(SecurityAction.RequestMinimum, Unrestricted=true)]&lt;/p&gt;&#xD;
&lt;p&gt;把Sharepoint的权限和安全权限都加上无限制的定义，但是，很遗憾经过测试，&lt;span style="color: red"&gt;依然不行，希望有精通策略文件的大虾能告知！&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&lt;span style="color: #000000"&gt;最终方案：&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&lt;span style="color: #000000"&gt;　　通过修改程序集信息调整策略文件权限的办法行不通，那么只好做出最后一招了，将QuickPart部署到GAC，这样的话，相当于FullTrust了，所以，程序终于能够正常运行。&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&lt;span style="color: #000000"&gt;　　当然，将QuickPart部署到GAC也不需要我们手工做，通过wspbuilder都可以一键式帮你傻瓜化完成，只要把QuickPart从80\bin目录下移到GAC目录下，在部署WSP包的时候，自动会帮你部署到GAC中。QuickPart最终放置位置如下：&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;font color="#ff0000"&gt;&lt;span style="color: #000000"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/hollisyao/122447/r_捕获2.PNG" width="284" height="318" /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1725848.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/05/02/1725848.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/04/24/1719539.html</id><title type="text">ASP.Net 域自动登录（AD自动登录）</title><summary type="text">在ASP.Net程序中实现自动登录，需要以下几个步骤：第一：　　IIS中取消&amp;#8220;启用匿名访问&amp;#8221;，启用&amp;#8220;集成Windows身份验证&amp;#8221;。第二：　　配置web.config，加入以下标记元素： &amp;lt;system.web&amp;gt; &amp;lt;authentication mode="Windows" /&amp;gt; &amp;lt;identity impersonate...</summary><published>2010-04-24T12:54:00Z</published><updated>2010-04-24T12:54:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/04/24/1719539.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/04/24/1719539.html"/><content type="html">&lt;p&gt;在ASP.Net程序中实现自动登录，需要以下几个步骤：&lt;/p&gt;&#xD;
&lt;p&gt;第一：&lt;/p&gt;&#xD;
&lt;p&gt;IIS中取消&amp;#8220;启用匿名访问&amp;#8221;，启用&amp;#8220;集成Windows身份验证&amp;#8221;。&lt;/p&gt;&#xD;
&lt;p&gt;第二：&lt;/p&gt;&#xD;
&lt;p&gt;配置web.config，加入以下标记元素：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;system.web&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;authentication mode="Windows" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;identity impersonate="true" /&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;/system.web&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;&amp;lt;identity impersonate="true" /&amp;gt;是用来做身份模拟的&lt;/span&gt;，这样在web程序的代码中，可以通过Context.User.Identity.Name获取到已登录的windows身份信息的用户名。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1719539.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/04/24/1719539.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/04/12/1710625.html</id><title type="text">Feature部署EventHandler注意事项</title><summary type="text">用Feature部署EventHandler的时候，因为Scope只能等于Web，所以，这里大家要注意，激活的时候，必须针对使用的单个网站激活，而不能在网站集上激活，有几个网站要使用必须分别激活。如下，有localhost网站以及子网站solutions要使用这个EventHandler的话，必须激活两次！stsadm-oactivatefeature-filenameEventHandler\F...</summary><published>2010-04-12T14:46:00Z</published><updated>2010-04-12T14:46:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/04/12/1710625.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/04/12/1710625.html"/><content type="html">&lt;p&gt;用Feature部署EventHandler的时候，因为Scope只能等于Web，所以，这里大家要注意，激活的时候，必须针对使用的&lt;span style="color: #ff0000"&gt;单个&lt;/span&gt;网站激活，而不能在网站集上激活，有几个网站要使用必须分别激活。如下，有localhost网站以及子网站solutions要使用这个EventHandler的话，必须激活两次！&lt;/p&gt;&#xD;
&lt;p&gt;stsadm&amp;nbsp;-o&amp;nbsp;activatefeature&amp;nbsp;-filename&amp;nbsp;EventHandler\Feature.xml&amp;nbsp;-url&amp;nbsp;&lt;a href="http://localhost/" target="_blank"&gt;http://localhost/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;stsadm&amp;nbsp;-o&amp;nbsp;activatefeature&amp;nbsp;-filename&amp;nbsp;EventHandler\Feature.xml&amp;nbsp;-url&amp;nbsp;&lt;a href="http://localhost/Solutions" target="_blank"&gt;http://localhost/Solutions&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;还有，用Feature安装EventHandler之后，在页面上的&lt;span style="color: #ff0000"&gt;网站集功能&lt;/span&gt;里面是看不到的，通过SharePoint Manager 2007这个工具是能够看到EventHandler是否安装成功，所以，不要界面看不到就以为没有安装成功。&lt;br /&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1710625.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/04/12/1710625.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2010/04/07/1706088.html</id><title type="text">QuickPart功能改进_Sharepoint_MOSS</title><summary type="text">在项目中，通过QuickPart来使用Webpart是一件很愉快的事情，但是，在Webpart越来越多的时候，就会有一些小困扰，比如用户控件列表项是杂乱无序的，对于在众多的控件中找到我们需要的控件是一件很有挑战的事情。 由于QuickPart是开源的，所以，我针对源代码进行了一些调整，实现了两个小功能：1. 增加用户控件列表项目的排序功能，可以根据文本或者值来排序，且支持升序或者降序。2. 增加用...</summary><published>2010-04-07T03:12:00Z</published><updated>2010-04-07T03:12:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2010/04/07/1706088.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2010/04/07/1706088.html"/><content type="html">&lt;p style="line-height: 150%; margin: 0cm 0cm 0pt" &gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在项目中，通过&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;font face="Calibri"&gt;QuickPart&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;来使用&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;font face="Calibri"&gt;Webpart&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;是一件很愉快的事情，但是，在&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;font face="Calibri"&gt;Webpart&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;越来越多的时候，就会有一些小困扰，比如用户控件列表项是杂乱无序的，对于在众多的控件中找到我们需要的控件是一件很有挑战的事情。&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 150%; margin: 0cm 0cm 0pt" &gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;font face="Calibri"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;由于&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;font face="Calibri"&gt;QuickPart&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;是开源的，所以，我针对源代码进行了一些调整，实现了两个小功能：&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 150%; text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1" &gt;&lt;span style="color: #1f497d; mso-fareast-font-family: Calibri" lang="EN-US"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;1.&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;增加用户控件列表项目的排序功能，可以根据文本或者值来排序，且支持升序或者降序。&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 150%; text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-list: l0 level1 lfo1" &gt;&lt;span style="color: #1f497d; mso-fareast-font-family: Calibri" lang="EN-US"&gt;&lt;span style="mso-list: Ignore"&gt;&lt;font face="Calibri"&gt;2.&lt;/font&gt;&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;增加用户控件列表项目的鼠标悬停提示功能，当鼠标悬停在每个项目上时，会出现提示信息。这个功能的应用场景是：当出现同名的两个控件时，可以通过提示信息区别每个控件所在的文件目录，从而使用我们需要的那个控件。&lt;/span&gt;&lt;span style="color: #1f497d" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 150%; margin: 0cm 0cm 0pt" &gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;以上改进控件版本在我的虚拟机通过测试。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="line-height: 150%; margin: 0cm 0cm 0pt" &gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="line-height: 150%; margin: 0cm 0cm 0pt" &gt;&lt;span style="font-family: 宋体; color: #1f497d"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;a title="点击下载改进后的dll文件" href="http://files.cnblogs.com/HollisYao/QuickPart.rar" target="_blank"&gt;点击下载改进后的dll文件&lt;/a&gt; &lt;img src="http://www.cnblogs.com/HollisYao/aggbug/1706088.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/HollisYao/archive/2010/04/07/1706088.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2009/11/12/1601731.html</id><title type="text">部署WebPart的两种方式</title><summary type="text">主体内容引用自：http://www.cnblogs.com/chenchaospr/archive/2008/04/29/1176631.html，稍作调整　　第一步：部署WebPart的dll文件。第一种部署方式是部署到bin目录里面，这种方式部署的webpart只能归当前的虚拟服务器使用；步骤：拷贝dll文件：在打开虚拟服务器的根目录，比如c:\inetpub\www，然后新建一个bin目录...</summary><published>2009-11-12T05:30:00Z</published><updated>2009-11-12T05:30:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2009/11/12/1601731.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2009/11/12/1601731.html"/></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2009/11/04/1595828.html</id><title type="text">MOSS/Sharepoint 2007 创建网站集之后，链接出现“未找到文件”错误提示</title><summary type="text">最近学习MOSS中，参照园子里这位兄弟的大作一步步尝试（http://www.cnblogs.com/gaoweipeng/archive/2009/10/24/1588672.html），进行到创建完网站集之后，准备设置网站的各项信息时，出现错误提示，比如，点击&amp;#8220;管理导航&amp;#8221;按钮，出现简洁明了的错误提示，几个小字&amp;#8220;未找到文件&amp;#8221;。　　于是乎，我根据当前...</summary><published>2009-11-04T03:23:00Z</published><updated>2009-11-04T03:23:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2009/11/04/1595828.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2009/11/04/1595828.html"/></entry><entry><id>http://www.cnblogs.com/HollisYao/archive/2008/06/05/1213248.html</id><title type="text">Apache2.2.8、php5.2.6、mysql5、phpMyAdmin2.11.6在Windows Vista下的安装和配置</title><summary type="text">最近开始捣鼓PHP，于是乎，先要配置好运行开发环境，鉴于现在系统是Vista，决定先在Vista上跑，有空再在虚拟机里面在装个ubuntu来跑php。在Vista中配置这个环境可是搞了我一晚上啊，在这里记下来以后备查，希望也能够给大家带来一丝帮助，足矣。 Linux下的东西崇尚的是手工活，大多数都是文本操作，连配置都不例外。所以，在Linux下的整个安装过程，需要用到很多的手工动作，极端的锻炼大家...</summary><published>2008-06-04T17:07:00Z</published><updated>2008-06-04T17:07:00Z</updated><author><name>探索人生</name><uri>http://www.cnblogs.com/HollisYao/</uri></author><link rel="alternate" href="http://www.cnblogs.com/HollisYao/archive/2008/06/05/1213248.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/HollisYao/archive/2008/06/05/1213248.html"/></entry></feed>
