<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_dosboy @ 南京</title><subtitle type="text">Office,SharePoint,解决方案</subtitle><id>http://feed.cnblogs.com/blog/u/25142/rss</id><updated>2011-12-20T08:25:52Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/25142/rss"/><entry><id>http://www.cnblogs.com/dosboy/archive/2011/12/20/2294852.html</id><title type="text">[转]SharePoint 2010 WSP包部署过程中究竟发生什么？</title><summary type="text">在SharePoint 2010中，我们可以使用Visual Studio 2010轻松创建WSP包来安装Web Part， Event Handler， Application Page以及其他。非常方便，但是你有没有研究过在在整个过程中SharePoint究竟做了些什么？以下是我根据http://msdn.microsoft.com/library/aa544500(office.14).aspx这边官方文章翻译，以及做实验的结果。我是用的是PowerShell命令进行部署。在部署项目之前，看一下我的项目结构(这个项目主要是使用Feature的方式来部署Web part)：</summary><published>2011-12-20T08:26:00Z</published><updated>2011-12-20T08:26:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/12/20/2294852.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/12/20/2294852.html"/><content type="html">&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&lt;div&gt;&#xD;
&lt;h3 &gt;&lt;span &gt;&lt;font size="5" face="微软雅黑"&gt;&lt;span style="font-size: 10pt"&gt;原文：&lt;/span&gt;&lt;a href="http://yysyb123.blog.163.com/blog/static/192050472011103054150256/"&gt;&lt;span style="font-size: 10pt"&gt;http://yysyb123.blog.163.com/blog/static/192050472011103054150256/&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;h3 &gt;&lt;span &gt;&lt;font size="5" face="微软雅黑"&gt;SharePoint 2010 WSP包部署过程中究竟发生什么？&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div  __1324368987971__="ev_3452585484"&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div id="cnblogs_post_body"&gt;&#xD;
&lt;p&gt;在SharePoint 2010中，我们可以使用Visual Studio 2010轻松创建WSP包来安装Web Part， Event Handler， Application Page以及其他。非常方便，但是你有没有研究过在在整个过程中SharePoint究竟做了些什么？以下是我根据&lt;a title="http://msdn.microsoft.com/library/aa544500(office.14).aspx" href="http://msdn.microsoft.com/library/aa544500(office.14).aspx" rel="nofollow"&gt;&lt;font color="#075db3"&gt;http://msdn.microsoft.com/library/aa544500(office.14).aspx&lt;/font&gt;&lt;/a&gt;这边官方文章翻译，以及做实验的结果。我是用的是PowerShell命令进行部署。&lt;/p&gt;&#xD;
&lt;p&gt;在部署项目之前，看一下我的项目结构(这个项目主要是使用Feature的方式来部署Web part)：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/fanwenxuan/201105/201105042002158856.jpg" rel="nofollow"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="SPS-SolutionDeploy-01" src="http://images.cnblogs.com/cnblogs_com/fanwenxuan/201105/201105042002211327.jpg" width="332" height="378" __1324368987971__="ev_5148095400" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;使用VS2010打包的结果是生成一个WSP文件&amp;#8220;SharePointWebPartProject.wsp&amp;#8221;.&lt;/p&gt;&#xD;
&lt;p&gt;第一步：向SharePoint添加解决方案包：&lt;/p&gt;&lt;pre&gt;Add-SPSolution -LiteralPath &lt;span&gt;"C:\Deploy\SharePointWebPartProject.wsp"&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;style&gt; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "courier new", courier, monospace; background-color: #ffffff; } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
部署的结果是WSP包被部署到SharePoint的配置数据库中.（默认是SharePoint_Config）&lt;/p&gt;&#xD;
&lt;p&gt;SQL 命令：&lt;/p&gt;&lt;pre&gt;select *  from dbo.Objects  &lt;span&gt;where&lt;/span&gt; name=&lt;span&gt;'SharePointWebPartProject.wsp'&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;p&gt;如果你的输入没有错误的话，你可以查询到2条相关的记录。&lt;/p&gt;&#xD;
&lt;p&gt;但是这个时候，数据还是仅仅存在于配置数据库中，我们还需要安装解决方案包。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;第二步：安装解决方案包：&lt;/p&gt;&lt;pre&gt;Install-SPSolution -Identity &lt;span&gt;"SharePointWebPartProject.wsp"&lt;/span&gt; -WebApplication http://www.contoso.com  -GACDeployment&lt;/pre&gt;&#xD;
&lt;style&gt; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "courier new", courier, monospace; background-color: #ffffff; } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;那么这一步的结果是什么呢？那就是先解压WSP包，然后拷贝程序集，Ascx等文件到相应的目录下面。当然咱们部署的是Feature,你就可以在&amp;#8220;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES&amp;#8221; 文件夹下面找到Feature的相关文件。在&amp;#8220;C:\Windows\assembly&amp;#8221;中也可以找到程序的dll.&lt;/p&gt;&#xD;
&lt;p&gt;如果你是多个Web前端怎么办？是不是还需要挨个部署？当然不需要了，Timer job会帮助你搞定这一切！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;第三步:激活Feature：&lt;/p&gt;&lt;pre&gt;Enable-SPFeature -Identity &lt;span&gt;"SharePointWebPartProject_SharePointWebPartFeature"&lt;/span&gt; -Url &lt;span&gt;&lt;a href="http://www.contoso.com/" rel="nofollow"&gt;&lt;font color="#075db3"&gt;http://www.contoso.com&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;style&gt; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "courier new", courier, monospace; background-color: #ffffff; } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;这里值得注意的是 Feature的名字可能和你想象的不一样。是&amp;#8220;ProjectName_FeatureName&amp;#8221;自动去掉中间的空格。当你使用命令行部署的时候，如果出现错误，不妨去&amp;#8220;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES&amp;#8221; 看一下这个feature叫什么名字。&lt;/p&gt;&#xD;
&lt;p&gt;那么接下来你就可以向页面添加Web Part了！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;补充：以下是删除解决方案的一些Powershell 命令，仅供参考：&lt;/p&gt;&lt;pre&gt;Disable-SPFeature -Identity &lt;span&gt;"SharePointWebPartProject_SharePointWebPartFeature"&lt;/span&gt; -Url http:&lt;span&gt;//www.contoso.com -Confirm:$false&lt;/span&gt;    Uninstall-SPSolution -Identity &lt;span&gt;"SharePointWebPartProject.wsp"&lt;/span&gt; -WebApplication &lt;span&gt;"http://www.contoso.com"&lt;/span&gt; -Confirm:$&lt;span&gt;false&lt;/span&gt;  Remove-SPSolution -Identity &lt;span&gt;"SharePointWebPartProject.wsp"&lt;/span&gt; -Confirm:$false&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;style&gt; .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "courier new", courier, monospace; background-color: #ffffff; } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;参考：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/library/cc262995.aspx" href="http://technet.microsoft.com/en-us/library/cc262995.aspx" rel="nofollow"&gt;&lt;font color="#075db3"&gt;http://technet.microsoft.com/en-us/library/cc262995.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a title="http://msdn.microsoft.com/library/aa544500(office.14).aspx" href="http://msdn.microsoft.com/library/aa544500(office.14).aspx" rel="nofollow"&gt;&lt;font color="#075db3"&gt;http://msdn.microsoft.com/library/aa544500(office.14).aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2294852.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/12/20/2294852.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/11/01/2231233.html</id><title type="text">在Sharepoint 2010 中给HTML内容编辑器部件自定义CSS样式</title><summary type="text">下面的代码是默认的样式定义,这定义可以在自定义的CSS中被重用,创建这些自定义CSS类就可以在高级文本编辑器中使用,如下面的例子就创建了一个AppleRed的样式:ms-rteElement-appleRed { color:red; -ms-name:"appleRed"; }注意:如果您想让上面的自定义的样式的名字在编辑器中出现, 它必须在母板页的CSS文件中直接存在,而不能去使用@import再去引用一个其它的CSS文件．</summary><published>2011-11-01T03:29:00Z</published><updated>2011-11-01T03:29:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/11/01/2231233.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/11/01/2231233.html"/><content type="html">&lt;div &gt;下面的代码是默认的样式定义,这定义可以在自定义的CSS中被重用,创建这些自定义CSS类就可以在高级文本编辑器中使用,&lt;/div&gt;&#xD;
&lt;div &gt;如下面的例子就创建了一个AppleRed的样式:&lt;/div&gt;&#xD;
&lt;div &gt;ms-rteElement-appleRed { color:red; -ms-name:"appleRed"; }&lt;/div&gt;&#xD;
&lt;div &gt;注意:如果您想让上面的自定义的样式的名字在编辑器中出现, 它必须在母板页的CSS文件中直接存在,而不能去使用@import再去引用一个其它的CSS文件．&#xD;
&lt;hr  /&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #800000"&gt;h1.ms-rteElement-H1&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H1&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;2em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-weight&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;normal&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;&lt;br /&gt;h2.ms-rteElement-H2&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H2&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1.3em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-weight&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;normal&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;h3.ms-rteElement-H3&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H3&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;h4.ms-rteElement-H4&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H4&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-style&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;italic&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-weight&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;normal&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;h1.ms-rteElement-H1B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H1B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#0072BC&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;2em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-weight&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;normal&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;h2.ms-rteElement-H2B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H2B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#CA0078&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1.3em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-weight&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;normal&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;h3.ms-rteElement-H3B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H3B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#0093CA&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;2.2em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;h4.ms-rteElement-H4B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-H4B&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#058036&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-style&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;italic&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-weight&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;normal&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;hr.ms-rteElement-Hr&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-Hr&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#B6B6B6&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;height&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;p.ms-rteElement-P&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-P&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#576170&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;div.ms-rteElement-Callout1&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-Callout1&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#FEF4E4&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;border&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1px&amp;nbsp;solid&amp;nbsp;#FD9F08&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;float&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;left&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;padding&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;10px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;width&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;25em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;div.ms-rteElement-Callout2&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-Callout2&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#F2F2F2&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;border&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1px&amp;nbsp;solid&amp;nbsp;#36B000&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#353738&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;float&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;right&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;padding&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;10px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;width&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;25em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;div.ms-rteElement-Callout3&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-Callout3&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#CA0078&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;float&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;right&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-style&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;italic&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;padding&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;10px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;width&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;25em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;div.ms-rteElement-Callout4&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteElement-Callout4&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#D8F4FF&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;border&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1px&amp;nbsp;solid&amp;nbsp;#00ADEE&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#005677&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;float&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;right&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-family&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;Verdana,Geneva,sans-serif&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;padding&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;10px&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;width&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;20em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-Normal&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#FFFFFF&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#676767&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-family&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;Verdana,Arial,sans-serif&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;8pt&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-Highlight&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;background-color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#FAE032&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#312A26&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-Byline&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#B6B6B6&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-Tagline&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#8B8B8B&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-size&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;1.3em&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-Comment&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#36B000&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;font-style&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;italic&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;text-shadow&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;0&amp;nbsp;0&amp;nbsp;5px&amp;nbsp;#000000&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-References&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#828282&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;span style="color: #800000"&gt;&lt;br /&gt;.ms-rteStyle-Caption&amp;nbsp;&lt;/span&gt;{&lt;span style="color: #ff0000"&gt;&lt;br /&gt;color&lt;/span&gt;:&lt;span style="color: #0000ff"&gt;#00ADEE&lt;/span&gt;;&lt;span style="color: #ff0000"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2231233.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/11/01/2231233.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/10/27/2227099.html</id><title type="text">在SharePoint Server 2010 的管理中心，点击“配置管理帐户”，就会在ManagedAccounts.aspx页面出现，“对象不存在”的出错信息应对方法！！！！</title><summary type="text">有一个问题非常的麻烦，忽然之间，我在SharePoint Server 2010 的管理中心，点击“配置管理帐户”，就会在ManagedAccounts.aspx页面出现，“对象不存在”的出错信息！！经过网上大量地搜索信息，终于找到了解决方法，出现这个问题，其实是ManagedAccounts.aspx这个程序本身的BUG造成的，在这个页面会列出您用过的所有的管理帐户，但是，如果您对哪个帐户有过改动，比较密码或是删除了这个帐户什么的。程序找不到这个用户，并不会捕获出错信息，而是直接扔出一个错误到系统。解决这个问题也不难，您回想一下哪个管理帐户会出问题，把它删除了就行了，使用如下PS命令：Rem</summary><published>2011-10-27T14:46:00Z</published><updated>2011-10-27T14:46:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/10/27/2227099.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/10/27/2227099.html"/><content type="html">&lt;p&gt;有一个问题非常的麻烦，&lt;/p&gt;&#xD;
&lt;p&gt;忽然之间，我在SharePoint Server 2010 的管理中心，点击&amp;#8220;配置管理帐户&amp;#8221;，就会在ManagedAccounts.aspx页面出现，&amp;#8220;对象不存在&amp;#8221;的出错信息！！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;经过网上大量地搜索信息，终于找到了解决方法，出现这个问题，其实是ManagedAccounts.aspx这个程序本身的BUG造成的，&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;解决这个问题也不难，您回想一下哪个管理帐户会出问题，把它删除了就行了，使用如下PS命令：&lt;/p&gt;&#xD;
&lt;p&gt;Remove-SPManagedAccount -Identity DOMAIN\ServiceAccount&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2227099.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/10/27/2227099.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/10/17/2215904.html</id><title type="text">一旦出错伤不起的Office SharePoint WorkSpace 2010 ！</title><summary type="text">总结：一旦Office SharePoint WorkSpace 2010出错，一定要在完全退出，并结束所有相关进程后再运行groove.exe /clean /all 删除命令</summary><published>2011-10-17T14:12:00Z</published><updated>2011-10-17T14:12:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/10/17/2215904.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/10/17/2215904.html"/><content type="html">&lt;p&gt;总结：一旦Office SharePoint WorkSpace 2010出错，一定要在完全退出，并结束所有相关进程后再运行groove.exe /clean /all 删除命令&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我与同事是使用workSpaces 进行文档共享的, 前一日, 因为改了本机用户Administrator的密码, 竟然WorkSpace登录不上去了! &lt;/p&gt;&#xD;
&lt;p&gt;提示的错误是, 帐户恢复错误!&amp;nbsp; 无论是点登录、还是点重新恢复都是一样的错误，只能点取消退出。&lt;/p&gt;&#xD;
&lt;p&gt;在网上找了半天资料，发现无论Office SharePoint WorkSpace 2010出现什么意外，只有一种解救的办法就是在应用程序的安装目录下使用命令:&lt;/p&gt;&#xD;
&lt;p&gt;groove /clean /all，&lt;/p&gt;&#xD;
&lt;p&gt;这个命令的作用：删除掉所有的登录和本地信息。&lt;/p&gt;&#xD;
&lt;p&gt;我使用后，启动，发现Office SharePoint WorkSpace 2010的启动界面好象又恢复到新安装时的状态，新喜不已，但好景不长。&lt;/p&gt;&#xD;
&lt;p&gt;但在新建一个引用至SharePoint 网站上的&amp;#8220;SharePoint WorkSpace&amp;#8221;的本地副本时，又出错了：&lt;/p&gt;&#xD;
&lt;p&gt;&amp;#8220;试图新建一个刚删除的工作区。... ....&amp;#8221;。&lt;/p&gt;&#xD;
&lt;p&gt;我晕，这个只是一个SharePoint 2010网站上的一个本地副本呀，又不是Groove工作区！&lt;/p&gt;&#xD;
&lt;p&gt;真是本人机智小聪明，想到这个可能是由于本地临时文件没有删除干净，造成的。&lt;/p&gt;&#xD;
&lt;p&gt;只好退出 Office SharePoint WorkSpace 2010，然后在任务管理器中，结束了所有以Groove开头的线程后。&lt;/p&gt;&#xD;
&lt;p&gt;继续运行上述命令，再重启Office SharePoint WorkSpace 2010。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;一切搞定！一旦出错伤不起的Office SharePoint WorkSpace 2010 ！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2215904.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/10/17/2215904.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/10/16/2214050.html</id><title type="text">[原]在Forefront TMG 2010 中关于“计算机（集）”与“网络”在应用规则的时候的重要区别</title><summary type="text">在ForeFront里有2个很重要的概念：1 计算机（或是计算机集）2 网络很多人把计算机与网络的关系，理解为计算机（或集）是网络的一部分。那么，应用到网络的设置（如启动TMG客户端）一定会应用到计算机（或集）中，真的是这样嘛？答案是否定的！！而问题是在foreFront TMG应用规则的时候，这2个概念决不是  网络= 计算机集 或是 网络=计算机+计算机 （虽然我们定义网络中是这么定义的）</summary><published>2011-10-16T05:08:00Z</published><updated>2011-10-16T05:08:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/10/16/2214050.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/10/16/2214050.html"/><content type="html">&lt;p&gt;在ForeFront里有2个很重要的概念：&lt;/p&gt;&#xD;
&lt;p&gt;1 计算机（或是计算机集）&lt;/p&gt;&#xD;
&lt;p&gt;2 网络&lt;/p&gt;&#xD;
&lt;p&gt;很多人把计算机与网络的关系，理解为计算机（或集）是网络的一部分。&lt;/p&gt;&#xD;
&lt;p&gt;那么，应用到网络的设置（如启动TMG客户端）一定会应用到计算机（或集）中，真的是这样嘛？&lt;/p&gt;&#xD;
&lt;p&gt;答案是否定的！！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;而问题是在foreFront TMG应用规则的时候，这2个概念决不是&amp;nbsp;&amp;nbsp; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;网络= 计算机集&lt;/strong&gt; 或是 &lt;strong&gt;网络=计算机+计算机 （&lt;/strong&gt;虽然我们定义网络中是这么定义的&lt;strong&gt;）&lt;/strong&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;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dosboy/ISA01.jpg" width="554" height="54" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们暂且把上面的规则叫 规则1，下面的叫 规则2。&lt;/p&gt;&#xD;
&lt;p&gt;这里2条规则里其实共同的作用就是让用户能上网,这里请大家注意，&lt;/p&gt;&#xD;
&lt;p&gt;Notebook 的IP是：192.168.1.253，&lt;/p&gt;&#xD;
&lt;p&gt;酒店网络的IP范围是：192.168.1.0 mask 255.255.255.0&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;读到这里时，大家会发现其实&amp;#8220;Notebook IP&amp;#8221;&amp;nbsp; ， 就是&amp;#8220;酒店网络&amp;#8221;的其中1台计算机！！！&lt;/p&gt;&#xD;
&lt;p&gt;那么规则1，是不是多余的呢？完全不是！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看官请看如下图，对于&amp;#8220;酒店网络&amp;#8221;我们启用了&amp;#8220;TMG客户端支持&amp;#8221;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/dosboy/ISA02.jpg" width="402" height="463" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看到这里，看官又会问了，那么作为&amp;#8220;酒店网络&amp;#8221;（192.168.1.0）的一员，NOTEBOOK（192.168.1.253）需不需要启动TMG客户端呢？&lt;/p&gt;&#xD;
&lt;p&gt;答案是：不需要，Notebook，完全是作为&lt;strong&gt;NAT客户端&lt;/strong&gt;来进行Internet的访问！&lt;/p&gt;&#xD;
&lt;p&gt;原因就是上面的&lt;strong&gt;规则1&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这就说明了一个问题：&lt;span style="color: #ff0000"&gt;即&amp;#8220;&lt;/span&gt;&lt;strong style="color: #ff0000"&gt;网络属性&lt;/strong&gt;&lt;span style="color: #ff0000"&gt;&amp;#8221;的设置，只能对基于&amp;#8220;网络&amp;#8221;的规则生效，而不直接对网络内的计算机（或计算机集）生效！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;留给读者另一个思考的问题：如果答对了，说明你理解了！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span&gt;如果规则2与规则1的顺序颠倒，会产生什么情况呢，NOTEBOOK还需要使用TMG客户端来上网嘛？请读者留下您的评论！&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2214050.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/10/16/2214050.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/10/07/2200899.html</id><title type="text">在C#中带连接超时功能的TcpClient类（翻译自MSDN论坛CMF）</title><summary type="text">关于TcpClient类在C#中对于操作TCP connection是非常方便的,非常地好！但是有一点就是，这个类对于CONNECT操作没有设置超时！系统默认的是60秒的超时，这明显过于地长。我们可以重新去用Thread的join这个带参数的线程，来解决这个问题，下面的这个类就是但连接超时参数的TCPCliento类the TcpClientWithTimeout.cs class:using System;using System.Net.Sockets;using System.Threading;/// &amp;lt;summary&amp;gt;/// TcpClientWithTimeout 用来</summary><published>2011-10-07T14:33:00Z</published><updated>2011-10-07T14:33:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/10/07/2200899.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/10/07/2200899.html"/><content type="html">&lt;p&gt;关于TcpClient&amp;nbsp;类在C#中对于操作TCP connection是非常方便的,非常地好！&lt;/p&gt;&#xD;
&lt;p&gt;但是有一点就是，这个类对于CONNECT操作没有设置超时！&lt;/p&gt;&#xD;
&lt;p&gt;系统默认的是60秒的超时，这明显过于地长。&lt;/p&gt;&#xD;
&lt;p&gt;我们可以重新去用Thread的join这个带参数的线程，来解决这个问题，下面的这个类就是但连接超时参数的TCPCliento类&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;the TcpClientWithTimeout.cs class:&lt;/p&gt;&lt;pre&gt;using System;&#xD;
using System.Net.Sockets;&#xD;
using System.Threading;&#xD;
&#xD;
/// &amp;lt;summary&amp;gt;&#xD;
/// TcpClientWithTimeout 用来设置一个带连接超时功能的类&lt;br /&gt;/// 使用者可以设置毫秒级的等待超时时间 (1000=1second)&#xD;
/// 例如:&#xD;
/// TcpClient connection = new TcpClientWithTimeout('127.0.0.1',80,1000).Connect();&#xD;
/// &amp;lt;/summary&amp;gt;&#xD;
public class TcpClientWithTimeout&#xD;
{&#xD;
  protected string _hostname;&#xD;
  protected int _port;&#xD;
  protected int _timeout_milliseconds;&#xD;
  protected TcpClient connection;&#xD;
  protected bool connected;&#xD;
  protected Exception exception;&#xD;
&#xD;
  public TcpClientWithTimeout(string hostname,int port,int timeout_milliseconds)&#xD;
  {&#xD;
    _hostname = hostname;&#xD;
    _port = port;&#xD;
    _timeout_milliseconds = timeout_milliseconds;&#xD;
  }&#xD;
  public TcpClient Connect()&#xD;
  {&#xD;
    // kick off the thread that tries to connect&#xD;
    connected = false;&#xD;
    exception = null;&#xD;
    Thread thread = new Thread(new ThreadStart(BeginConnect));&#xD;
    thread.IsBackground = true; // 作为后台线程处理&lt;br /&gt;    // 不会占用机器太长的时间&lt;br /&gt;    thread.Start();&#xD;
&#xD;
    // 等待如下的时间&lt;br /&gt;    thread.Join(_timeout_milliseconds);&#xD;
&#xD;
    if (connected == true)&#xD;
    {&#xD;
      // 如果成功就返回TcpClient对象&#xD;
      thread.Abort();&#xD;
      return connection;&#xD;
    }&#xD;
    if (exception != null)&#xD;
    {&#xD;
      // 如果失败就抛出错误&#xD;
      thread.Abort();&#xD;
      throw exception;&#xD;
    }&#xD;
    else&#xD;
    {&#xD;
      // 同样地抛出错误&#xD;
      thread.Abort();&#xD;
      string message = string.Format("TcpClient connection to {0}:{1} timed out",&#xD;
        _hostname, _port);&#xD;
      throw new TimeoutException(message);&#xD;
    }&#xD;
  }&#xD;
  protected void BeginConnect()&#xD;
  {&#xD;
    try&#xD;
    {&#xD;
      connection = new TcpClient(_hostname, _port);&#xD;
      // 标记成功，返回调用者&#xD;
      connected = true;&#xD;
    }&#xD;
    catch (Exception ex)&#xD;
    {&#xD;
      // 标记失败&#xD;
      exception = ex;&#xD;
    }&#xD;
  }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;下面的这个例子就是如何利用5秒的超时，去连接一个网站发送10字节的数据，并且接收10字节的数据。&lt;/p&gt;&#xD;
&lt;p&gt;// connect with a 5 second timeout on the connection&lt;br /&gt;TcpClient connection = new TcpClientWithTimeout("www.google.com", 80, 5000).Connect();&lt;br /&gt;NetworkStream stream = connection.GetStream();&lt;br /&gt;&lt;br /&gt;// Send 10 bytes&lt;br /&gt;byte[] to_send = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xa};&lt;br /&gt;stream.Write(to_send, 0, to_send.Length); &lt;br /&gt;&lt;br /&gt;// Receive 10 bytes&lt;br /&gt;byte[] readbuf = new byte[10]; // you must allocate space first&lt;br /&gt;stream.ReadTimeout = 10000; // 10 second timeout on the read&lt;br /&gt;stream.Read(readbuf, 0, 10); // read&lt;br /&gt;&lt;br /&gt;// Disconnect nicely&lt;br /&gt;stream.Close();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// workaround for a .net bug: http://support.microsoft.com/kb/821625&lt;br /&gt;connection.Close();&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2200899.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/10/07/2200899.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/09/14/2176256.html</id><title type="text">微软虚拟学院开了！</title><summary type="text">MVA微软虚拟大学开了，大学以后可以有新的学习的园地，非常推荐大家去注册。注册链接：http://www.microsoftvirtualacademy.com/Home.aspx?ocid=ban-n-cn-jtc-DPR-Community8Microsoft 云下载功能强大的 Microsoft 云下载下载链接：http://technet.microsoft.com/zh-cn/cloud/gg288496.aspx?ocid=ban-n-cn-jtc-DPR-Community8</summary><published>2011-09-14T07:30:00Z</published><updated>2011-09-14T07:30:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/09/14/2176256.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/09/14/2176256.html"/><content type="html">&lt;p&gt;&lt;strong style="font-size: 36pt"&gt;M&lt;/strong&gt;&lt;strong style="color: #3366ff; font-size: 36pt"&gt;VA&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;微软虚拟大学开了，大学以后可以有新的学习的园地，非常推荐大家去注册。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;注册链接：&lt;a href="http://www.microsoftvirtualacademy.com/Home.aspx?ocid=ban-n-cn-jtc-DPR-Community8"&gt;http://www.microsoftvirtualacademy.com/Home.aspx?ocid=ban-n-cn-jtc-DPR-Community8&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Microsoft 云下载&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;h3 style="padding-bottom: 6px; padding-top: 8px"&gt;功能强大的 Microsoft 云下载&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下载链接：&lt;a href="http://technet.microsoft.com/zh-cn/cloud/gg288496.aspx?ocid=ban-n-cn-jtc-DPR-Community8"&gt;http://technet.microsoft.com/zh-cn/cloud/gg288496.aspx?ocid=ban-n-cn-jtc-DPR-Community8&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/2176256.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/09/14/2176256.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/05/11/2043388.html</id><title type="text">基于SharePoint 工作流的InfoPath 2010的报修系统的建立：第五章 主提醒工作流的设计</title><summary type="text">前四章我们用无代码设计了一系列的表单视图，这些表单访问者可以通过单击它，以自动地打开不同的视图来完成报修过程的电子化，但是可能还是不太方便，因为使用者要去网站去点击这些文档库，那么我们就要设计一个工作流，这样的话系统可以在每一次状态变化的时候，就发电子邮件来提醒报修提交者、审批者、处理者。 首先， １　当有新文档进入文档库时（即文档库被更新时），并且当前处理状态为“未审批”时，我们要发一个邮件给经理，提醒经理已经有报修单，必须要处理。 ２　当前处理状态为“已审批时”，我们要发一个邮件给“处理者”，提醒处理者，必须要处理这个报修单，发一个邮件给“提交者”，说这个单子已经被批了。 ３　当前处理状态为“关闭”，时我们要发一个邮件给提交者，说这个单子，已经关闭了。 ４　当前处理状态为其它任何值时，我们要发一个邮件给提交者、经理，告之这个单子，进行到哪一步了。 其中最不好处理的是第４条，因为你处理的过程可能是千变万化，你怎么知道工作流处理到哪一层了呢？这就要使用到SharePoint辅助工作流了，辅助工作流，就是在主工作流的以外，再设一个相关的工作流，这个工作流用</summary><published>2011-05-11T08:49:00Z</published><updated>2011-05-11T08:49:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/05/11/2043388.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/05/11/2043388.html"/><content type="html">&lt;p&gt;前四章我们用无代码设计了一系列的表单视图，这些表单访问者可以通过单击它，以自动地打开不同的视图来完成报修过程的电子化，但是可能还是不太方便，因为使用者要去网站去点击这些文档库，那么我们就要设计一个工作流，这样的话系统可以在每一次状态变化的时候，就发电子邮件来提醒报修提交者、审批者、处理者。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;首先，&lt;/p&gt; &lt;p&gt;１　当有新文档进入文档库时（即文档库被更新时），并且当前处理状态为&amp;#8220;未审批&amp;#8221;时，我们要发一个邮件给经理，提醒经理已经有报修单，必须要处理。&lt;/p&gt; &lt;p&gt;２　当前处理状态为&amp;#8220;已审批时&amp;#8221;，我们要发一个邮件给&amp;#8220;处理者&amp;#8221;，提醒处理者，必须要处理这个报修单，发一个邮件给&amp;#8220;提交者&amp;#8221;，说这个单子已经被批了。&lt;/p&gt; &lt;p&gt;３　当前处理状态为&amp;#8220;关闭&amp;#8221;，时我们要发一个邮件给提交者，说这个单子，已经关闭了。&lt;/p&gt; &lt;p&gt;４　当前处理状态为其它任何值时，我们要发一个邮件给提交者、经理，告之这个单子，进行到哪一步了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;其中最不好处理的是第４条，因为你处理的过程可能是千变万化，你怎么知道工作流处理到哪一层了呢？这就要使用到SharePoint辅助工作流了，辅助工作流，就是在主工作流的以外，再设一个相关的工作流，这个工作流用来就是对主工作流产生的一些数据进行处理，比如附加到主工作流的任务列表，或是其它的。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;一、打开网站，然后ＳＰＤ，点击&amp;#8220;网站操作&amp;#8221;下的&amp;#8220;在SharePoint Disgner中编辑&amp;#8221;&lt;/p&gt; &lt;p&gt;二、如下图，点击&amp;#8220;添加项目&amp;#8221;，如下图我们把这个工作流，命名为：&amp;#8220;提醒工作流&amp;#8221;&lt;/p&gt; &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649027821.png" width="772" height="506"&gt;&lt;/p&gt; &lt;p&gt;三、设计工作流：&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;１　首先我们设计第一个步骤，在第一个步骤中，我们设定好条件，如下图：&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649025313.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649022804.png" width="605" height="174"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;我们把这些用户，设置成经理的电子邮件，然后在&amp;#8220;定义电子邮件&amp;#8221;的对话框中，把邮件的内容设置成如下图的：&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649022248.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649028103.png" width="553" height="475"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;这个对话有丰富的插入变更你的功能，你可以随便地，插入超链或是项目中的任何字段的值，真是非常方便。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;为了考虑到启动工作流时，在出错的情况下有可能报修条目的&amp;#8220;当前处理状态&amp;#8221;，不是未审批，那么就表示这个工作流可以有问题，于是我们就设置在这个不正确的状态下就停止工作流，如下图：&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649025595.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649026675.png" width="594" height="446"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;我们再把第一个步骤设置成&amp;#8220;提醒经理&amp;#8221;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;２　进入第二个步骤，在这个步骤，我们要等待，&amp;#8220;当前处理状态&amp;#8221;变成&amp;#8220;已审批&amp;#8221;，审批结束了会有２个结果&amp;#8220;同意&amp;#8221;或是&amp;#8220;不同意&amp;#8221;，这个在&amp;#8220;审批&amp;#8221;字段的值里可以体现，如下图：&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649026119.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649025562.png" width="862" height="658"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;同时，在第二步中，除了要给创建者发送电子邮件外，还要给处理者，发送提醒处理的电子邮件，格式我就不列出来了，结束后，第二个步骤应该是这个样子。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649023054.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/20110511164902546.png" width="629" height="364"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;３　第三步骤,就不多讲了，如下图设置，等待&amp;#8220;当前处理状态&amp;#8221;方关闭时，就把所有的工作流正常关闭就行了。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649038037.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649039117.png" width="618" height="179"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;４　设置工作流的基本参数， 点击面板的&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649033021.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649032149.png" width="85" height="78"&gt;&lt;/a&gt;，可以设置成如下图：&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649039641.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201105/201105111649037132.png" width="525" height="322"&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;最后我们保存这个工作流，你会发现在表单的&amp;#8220;提交&amp;#8221;、&amp;#8220;审批&amp;#8221;、&amp;#8220;结束&amp;#8221;阶段，工作流会自动发出电子邮件来提醒使用者。 但是对于其它状态，我们还无能为力，那么就要用到我们下一章需要讲到的辅助工作流！&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dosboy/aggbug/2043388.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/05/11/2043388.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/03/14/1983365.html</id><title type="text">参加SharePoint深度论坛，学会如何去讲课</title><summary type="text">３月１０号在微软大厦3层搞了一个讲外国专家过来进行SharePoint 深度技术论坛，其实就论坛的本身，我觉得对于技术方面，确实不是很高的ＬＥＶＥＬ，但是老外老课的风格我比较喜欢。 特别是一个Mark Miller，他调侃自己是来自丹佛的牛仔，估计已经有４０多了，讲课的时候感觉他都有一点颤抖。课后，我和他交流一下，他说是从2007年开始搞SharePoint的，虽然搞了４年，但是已经撰写下了18...</summary><published>2011-03-14T03:18:00Z</published><updated>2011-03-14T03:18:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/03/14/1983365.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/03/14/1983365.html"/><content type="html">&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt; &lt;p&gt;&lt;img alt="" src="http://www.msiw.net/_layouts/images/blank.gif" width="1" height="1"&gt;&lt;/p&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;img alt="" src="http://www.msiw.net/_layouts/images/blank.gif" width="4" height="1"&gt; &lt;p&gt;&lt;img alt="" src="http://www.msiw.net/_layouts/images/blank.gif" width="10" height="1"&gt; &lt;p&gt;&lt;a name="mainContent"&gt;&lt;/a&gt;３月１０号在微软大厦3层搞了一个讲外国专家过来进行SharePoint 深度技术论坛，其实就论坛的本身，我觉得对于技术方面，确实不是很高的ＬＥＶＥＬ，但是老外老课的风格我比较喜欢。 &lt;p&gt;特别是一个&lt;strong&gt;&lt;font size="4"&gt;Mark Miller&lt;/font&gt;&lt;/strong&gt;，他调侃自己是来自丹佛的牛仔，估计已经有４０多了，讲课的时候感觉他都有一点颤抖。课后，我和他交流一下，他说是从2007年开始搞SharePoint的，虽然搞了４年，但是已经撰写下了1800多篇文章，真是一个孜孜不倦的教育者,有时候感觉他们对于技术或是教育的投入，真是值得我们去学习。 &lt;p&gt;&lt;p&gt;这里有一篇文章是关于他的，说他是SharePoint的Rock Star，哈哈： &lt;p&gt;&lt;a title="http://community.bamboosolutions.com/blogs/rock_stars_of_sharepoint/archive/2009/06/15/spotlight-on-mark-miller-sharepoint-rock-star.aspx" href="http://community.bamboosolutions.com/blogs/rock_stars_of_sharepoint/archive/2009/06/15/spotlight-on-mark-miller-sharepoint-rock-star.aspx"&gt;http://community.bamboosolutions.com/blogs/rock_stars_of_sharepoint/archive/2009/06/15/spotlight-on-mark-miller-sharepoint-rock-star.aspx&lt;/a&gt; &lt;p&gt;&lt;p&gt;现在把他的博客贴出来： &lt;p&gt;&lt;a title="http://www.endusersharepoint.com/2010/12/20/the-closing-of-endusersharepoint-com-long-live-end-user-sharepoint/" href="http://www.endusersharepoint.com/2010/12/20/the-closing-of-endusersharepoint-com-long-live-end-user-sharepoint/"&gt;http://www.endusersharepoint.com/2010/12/20/the-closing-of-endusersharepoint-com-long-live-end-user-sharepoint/&lt;/a&gt; &lt;p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201103/201103141118012969.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Mark Miller" border="0" alt="Mark Miller" src="http://images.cnblogs.com/cnblogs_com/dosboy/201103/201103141118019905.jpg" width="244" height="184"&gt;&lt;/a&gt;&lt;img src="http://www.cnblogs.com/dosboy/aggbug/1983365.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/03/14/1983365.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dosboy/archive/2011/02/01/1948793.html</id><title type="text">基于SharePoint 工作流的InfoPath 2010的报修系统的建立：第四章 报修单批准和处理等视图的设计</title><summary type="text">在上一章，我们讲述了如何去建立一个拥有规则、基于浏览器和提交的表单，并且通过带筛选的功能，我们还可以自动地设置一些域的默认值。这一章我们主要把所有的规则应用，去建立其它的视图，这些视图包括用来审批的：审批单视图，记录处理过程的处理视图。 一、建立审批视图： 如下图，我们新建一个视图，其中包括如下的字段，其中在绿色框架中的，就是在前一章中创建的报修单的一些字段，这里，为了让审批者可以看清，我们把报修单中的了段都做成了“已计算值” 1 处理人：在处理人这个域中，我们使用了，“个人/组选择器”，如下图，并且我们把“当前处理人”，这个字段就设置成这个域下面的DisplayName。 2. 提交按钮 同</summary><published>2011-02-01T15:16:00Z</published><updated>2011-02-01T15:16:00Z</updated><author><name>dosboy</name><uri>http://www.cnblogs.com/dosboy/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dosboy/archive/2011/02/01/1948793.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dosboy/archive/2011/02/01/1948793.html"/><content type="html">&lt;p&gt;在上一章，我们讲述了如何去建立一个拥有规则、基于浏览器和提交的表单，并且通过带筛选的功能，我们还可以自动地设置一些域的默认值。这一章我们主要把所有的规则应用，去建立其它的视图，这些视图包括用来审批的：审批单视图，记录处理过程的处理视图。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;strong&gt;一、建立审批视图：&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;如下图，我们新建一个视图，其中包括如下的字段，其中在绿色框架中的，就是在前一章中创建的报修单的一些字段，这里，为了让审批者可以看清，我们把报修单中的了段都做成了&amp;#8220;已计算值&amp;#8221;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315288429.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="615" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315287034.png" width="674" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;1 处理人：在处理人这个域中，我们使用了，&amp;#8220;个人/组选择器&amp;#8221;，如下图，并且我们把&amp;#8220;&lt;strong&gt;当前处理人&lt;/strong&gt;&amp;#8221;，这个字段就设置成这个域下面的DisplayName。&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315286510.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="499" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315283479.png" width="753" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;2. &lt;strong&gt;提交按钮&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;同样，这个提交按钮，我们也要让它去执行三个操作，如下图，但是也有一个条件，就是当前登录的人在人事情况表中的职务必须包括&amp;#8220;经理&amp;#8221;，如下图：&lt;/p&gt; &lt;p&gt;条件公式为：contains(xdXDocument:GetDOM("人事情况表")/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:JobTitle[../d:_x59d3__x540d__x62fc__x97f3_ = xdUser:get-UserName()], "经理")&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315281003.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="573" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315293196.png" width="628" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;strong&gt;二、处理视图：&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315299085.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="417" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315294101.png" width="920" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;1 如何筛选最大日期的数据。&lt;/strong&gt;在处理视图，我们使用了一个重复表，来记录每一个处理的过程，其中包括如下的信息：处理日期、处理人、处理状态、说明，为了管理上的方便，我们还必须有一组字段来反应最新的处理结果，这组字段叫&amp;#8220;最新组&amp;#8221;，但是这个最新的处理结果只能从重复表中选取日期最新的，这组域就叫：当前处理人、当前处理日期、当前处理状态、当前状态说明。为了能在重复表中，把最新的处理条目筛选出来，我们可以在重复表中使用规则，当得重复表中的任一一个控的有变化时，我们就把当前的行与&amp;#8220;最新组&amp;#8221;比较，把最近日期的数据填到&amp;#8220;最新组&amp;#8221;中去。&lt;/p&gt; &lt;p&gt;我们必须在重复表中的处理日期，应用如下的规则：&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315295214.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="408" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315298594.png" width="825" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;同样在处理人、处理状态、处理说明，我们都同样应用如上的处理规则。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2 提交：&lt;/strong&gt;提交前判断一下职务是不是包括行政或是经理，就行了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;三、查看（打印）视图：&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;其实查看或是打印视图，就是一个可以看到全面信息的只读表格：&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315297199.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="442" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315296119.png" width="652" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;四、初始规则和属性提升：&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;如果要让表单一开始就根据域值来进行属性的选择，那么就必须设置初始的规则：&lt;/p&gt; &lt;p&gt;如下图&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/dosboy/201102/20110201231530820.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="541" alt="image" src="http://images.cnblogs.com/cnblogs_com/dosboy/201102/201102012315304200.png" width="917" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;1 当前处理状态为&amp;#8220;未指定&amp;#8221;，或是空是，我们切换到报修视图，说明系统允许报修人填写或是修改报修内容。&lt;/p&gt; &lt;p&gt;2 当前处理状态为&amp;#8220;未审批&amp;#8221;，当前用户是经理，并且审批人为空时，我们切换到审批视图，并且设置审批人为当前登录人。&lt;/p&gt; &lt;p&gt;3 当前处理状态为&amp;#8220;未审批&amp;#8221;，当前用户是经理，我们切换到审批视图。&lt;/p&gt; &lt;p&gt;4 审批为&amp;#8220;同意&amp;#8221;，当前是经理或是行政人员，切换到处理视图。&lt;/p&gt; &lt;p&gt;5 其它情况，切换到打印视图。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;同时，我们把其它所有的属性都进行提升，提升到库的栏，这样我们在进行信息归类时，就可以通过网站的操作来进行工作流的制作。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;现在表单基本都做好了，使用者可以来在库中提交报修申请，如果经理打开了，就会自动切换到审批视图进行审批，如果审批通过，行政人员打开后，就可以进行处理的记录。现在缺的就是如何把这些操作通过一些自定义的操作串起来，当然你也可以命令部下每天打开文档库看看你的申请有没有被批准，有没有新的申请过来，但这总不是太智能不是嘛？下一章，我们就通过SPD的工作流，把这样东东通过任务列表和电子邮件信息串起来。&lt;/p&gt; &lt;img src="http://www.cnblogs.com/dosboy/aggbug/1948793.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dosboy/archive/2011/02/01/1948793.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
