<?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/6361/rss</id><updated>2011-02-23T07:48:01Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/6361/rss"/><entry><id>http://www.cnblogs.com/dwang/archive/2011/02/23/1962361.html</id><title type="text">SharePoint 2010问题集锦 (2011.2)</title><summary type="text">问：如何修改SharePoint默认的任务通知邮件的格式？答：SharePoint的通知邮件(Alert)模板存储在配置数据库里，所有的通知模板的定义位于Local_Drive\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\XML\Alerttemplates.xml文件中。 而AlertTemplates.xml文件中的资源变量，如：$Resources:Alerts_anything_filter_shortname，保存在Local_Drive\Program Files\Com</summary><published>2011-02-23T07:46:00Z</published><updated>2011-02-23T07:46:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2011/02/23/1962361.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2011/02/23/1962361.html"/><content type="html">&lt;table width="711" cellpadding="2" cellspacing="0" border="0"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;如何修改SharePoint默认的任务通知邮件的格式？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;SharePoint的通知邮件(Alert)模板存储在配置数据库里，所有的通知模板的定义位于Local_Drive\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\XML\Alerttemplates.xml文件中。         &lt;br /&gt;          &lt;br /&gt;而AlertTemplates.xml文件中的资源变量，如：$Resources:Alerts_anything_filter_shortname，保存在Local_Drive\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Resources\core.(Language).resx。          &lt;br /&gt;          &lt;br /&gt;通过core.(Language).resx文件，我们可以修改通知邮件的标题，但要修改邮件的内容体，我们需要修改Local_Drive\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\(LCID)\Workflow\下的.Action文件。&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;SharePoint 2010与Office 2010安装在一台服务器上，当用Office打开SharePoint文档库中的文档时，遇到&amp;ldquo;Word在试图打开文件时遇到错误，请尝试下列方法：检查文档或驱动器的文件权限，确保有足够的内存和磁盘空间，用文本恢复转换器打开文件&amp;hellip;&amp;rdquo;。该如何解决？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;如果遇到这类错误（如下图），请按如下方法解决：&lt;a href="http://images.cnblogs.com/cnblogs_com/dwang/201102/201102231545537366.png"&gt;           &lt;br /&gt;&lt;img height="123" width="244" src="http://images.cnblogs.com/cnblogs_com/dwang/201102/201102231545549185.png" alt="image" border="0" title="image" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" /&gt;&lt;/a&gt;          &lt;br /&gt;          &#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;关闭Office保护视图：打开Word, PowerPoint或Excel，点击Office Backspace -&amp;gt; 选项-&amp;gt; 信任中心-&amp;gt; 信任中心设置 -&amp;gt; 受保护视图 -&amp;gt; 取消所有的受保护视图选项。（注：如果要使用Office OneNote 2010，请确保激活Windows Server 2008 R2的&amp;ldquo;桌面体验&amp;rdquo;。&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1962361.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2011/02/23/1962361.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2011/02/18/1957888.html</id><title type="text">SharePoint 2010问题集锦 (2011.1)</title><summary type="text">问：如何用代码判断SharePoint 当前显示的语言类型？答：SharePoint通过安装语言包可以显示不同的语言。如果浏览器默认的语言是简体中文则显示简体中文界面，如果是英文则显示英文界面。当然，用户也可以手工选择要显示的语言。 可以通过如下代码来判断用户当前选择的语言类型： System.Globalization.CultureInfo.CurrentUICulture;问：SharePoint用户偶尔会要求再次输入用户名和密码，错误提示：“Error: An existing connection was forcibly closed by the remote host”，日志文</summary><published>2011-02-18T07:34:00Z</published><updated>2011-02-18T07:34:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2011/02/18/1957888.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2011/02/18/1957888.html"/><content type="html">&lt;table width="711" cellpadding="2" cellspacing="0" border="0"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;如何用代码判断SharePoint 当前显示的语言类型？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;SharePoint通过安装语言包可以显示不同的语言。如果浏览器默认的语言是简体中文则显示简体中文界面，如果是英文则显示英文界面。当然，用户也可以手工选择要显示的语言。          &lt;br /&gt;可以通过如下代码来判断用户当前选择的语言类型：           &lt;br /&gt;&lt;span face="Consolas" style="font-family: Consolas;"&gt;System.Globalization.CultureInfo.CurrentUICulture;&lt;/span&gt;&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;SharePoint用户偶尔会要求再次输入用户名和密码，错误提示：&amp;ldquo;Error: An existing connection was forcibly closed by the remote host&amp;rdquo;，日志文件提示：&amp;ldquo;Unknown SQL Exception 10054 occurred. Additional error information from SQL Server is included below. A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)&amp;ldquo;。该如何解决：&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;这个问题的产生与传输层有关系。建议：          &lt;br /&gt;1. 首先升级网卡驱动；           &lt;br /&gt;2. 禁用SharePoint Server和SQL Server上的TCP Chimney Offload：Netsh int ip set chimney DISABLED           &lt;br /&gt;3. 禁用相关服务器上的Lookbackcheck：注册表-&amp;gt;HKLM\System\CurrentControlSet\Control\Lsa,-&amp;gt;创建DWORD类型的DisableLoopbackCheck=1,-&amp;gt;重启服务器；&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;如何创建能够继承站点左面导航(Left Navigation)的Web Part页面？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;步骤如下：          &lt;br /&gt;1. 创建一个Web Part页面，这时的页面默认只继承了顶部导航(Top Navigation)；           &lt;br /&gt;2. 打开SharePoint Designer，打开并编辑上一步创建好的页面；最好把原始页面备份一下；           &lt;br /&gt;3. 选择&amp;ldquo;高级模式&amp;rdquo;，切换到&amp;ldquo;代码&amp;rdquo;模式；           &lt;br /&gt;4. 搜索&amp;ldquo;Body s4-leftpanel&amp;rdquo;，找到后把下面的内容注释掉：&#xD;
&lt;p&gt;&amp;lt;%--            &lt;br /&gt;&amp;lt;style type="text/css"&amp;gt;             &lt;br /&gt;body s4-leftpanel {             &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; display:none;             &lt;br /&gt;}             &lt;br /&gt;.s4-ca {             &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; margin-left:0px;             &lt;br /&gt;}             &lt;br /&gt;&amp;lt;/style&amp;gt;             &lt;br /&gt;--%&amp;gt;             &lt;/p&gt;&#xD;
&lt;p&gt;5. 搜索&amp;ldquo;PlaceHolderNavSpacer&amp;rdquo;，把如下内容也注释掉：            &lt;br /&gt;&amp;lt;%--             &lt;br /&gt;&amp;lt;asp:Content ContentPlaceHolderId="PlaceHolderNavSpacer" runat="server"&amp;gt;&amp;lt;/asp:Content&amp;gt;             &lt;br /&gt;&amp;lt;asp:Content ContentPlaceHolderId="PlaceHolderLeftNavBar" runat="server"&amp;gt;&amp;lt;/asp:Content&amp;gt;             &lt;br /&gt;--%&amp;gt;             &lt;br /&gt;6. 保存一下，就会看到左边导航出现了！&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;SharePoint与AD-RMS的关系&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;当用户向一个启用AD-RMS保护的文档库上传文档时，如果这个文档预先已经启用了IRM或者其它保护措施，SharePoint并不会截除加密，而只是把它存放在内容数据库，但这会导致这个文档无法被搜索和索引到；相反，如果这个文档没有启用IRM，那么文档只是在被用户下载时才会附加文档库的RMS信息，这样的文档可以被搜索和索引。&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;如何使用FAST for SharePoint对非SharePoint站点建立索引？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;&#xD;
&lt;p&gt;&amp;middot; Exchange - &lt;a href="http://technet.microsoft.com/en-us/library/ff473167.aspx"&gt;http://technet.microsoft.com/en-us/library/ff473167.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;middot; Lotus - &lt;a href="http://technet.microsoft.com/en-us/library/ff715346.aspx"&gt;http://technet.microsoft.com/en-us/library/ff715346.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&amp;middot; Documentum - &lt;a href="http://technet.microsoft.com/en-us/library/ff756030.aspx"&gt;http://technet.microsoft.com/en-us/library/ff756030.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;SharePoint是否可以安装到只读Read-Only域控制器？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;不可以。&lt;a href="http://support.microsoft.com/kb/970612"&gt;http://support.microsoft.com/kb/970612&lt;/a&gt;&amp;nbsp; &lt;br /&gt;如果安装到只读域控制器上，People Picker就无法解析用户。 &lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;问：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;如何调整FAST能够检索的文档的最大大小？&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="22" valign="top"&gt;答：&lt;/td&gt;&#xD;
&lt;td width="687" valign="top"&gt;&#xD;
&lt;p&gt;默认大小：16MB（16384KB）。可以通过PowerShell进行更改。比如：更改为20MB。&lt;/p&gt;&#xD;
&lt;p&gt;Set-FASTSearchMetadataManagedProperty -Name body -MaxIndexSize 20480&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1957888.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2011/02/18/1957888.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/12/08/1899983.html</id><title type="text">Excel REST使用方法</title><summary type="text">REST 语法：http://server/_vti_bin/ExcelRest.aspx/Shared%20Documents/File.xlsx/Model/资源名称访问内容…/ModelThe workbook (the binary or the available feeds)/Model/RangesList of named ranges in a workbook (some of them)/Model/Ranges('RangeName')?$format=htmlSpecific range./Model/ChartsList of charts/Model/Charts</summary><published>2010-12-08T03:05:00Z</published><updated>2010-12-08T03:05:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/12/08/1899983.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/12/08/1899983.html"/><content type="html">&lt;p&gt;REST 语法：http://server/_vti_bin/ExcelRest.aspx/Shared%20Documents/File.xlsx/Model/&#xD;
&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table style="border-collapse: collapse;" border="0"&gt;&#xD;
&lt;colgroup span="1"&gt;&lt;col style="width: 442px;" span="1"&gt;&lt;/col&gt;&lt;col style="width: 280px;" span="1"&gt;&lt;/col&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr style="height: 11px; background: #ffc000;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: solid white 1.0pt; border-left: solid white 1.0pt; border-bottom: solid white 3.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;资源名称&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: solid white 1.0pt; border-left: none; border-bottom: solid white 3.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;访问内容&amp;hellip;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #ffe8cb;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;The workbook (the binary or the available feeds)&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #fff4e7;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/Ranges&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;List of named ranges in a workbook (some of them)&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #ffe8cb;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/Ranges('RangeName')?$format=html&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Specific range.&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #fff4e7;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/Charts&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;List of charts&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #ffe8cb;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/Charts('ChartName')?$format=image&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Specific Chart&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #fff4e7;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/Tables&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;List of tables (Lists)&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #ffe8cb;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/Tables('TableName')?$format=html&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Specific table&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #fff4e7;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/PivotTables&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;List of PivotTables&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #ffe8cb;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;/Model/PivotTables('PivotName')?$format=html&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Specific PivotTable&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #fff4e7;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Model/Ranges('('Sheet1!A1|D4'')?$format=html&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Normal Range&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="height: 1px; background: #ffe8cb;"&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: solid white 1.0pt; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Model/Charts('ChartName')?$format=image&amp;amp;Ranges('FiscalYear')=2008&amp;amp;Ranges('Sheet1!A1')=0.50&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="padding-top: 5px; padding-left: 10px; padding-bottom: 5px; padding-right: 10px; border-top: none; border-left: none; border-bottom: solid white 1.0pt; border-right: solid white 1.0pt;"&gt;&#xD;
&lt;p&gt;Insert Values&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1899983.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/12/08/1899983.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/08/09/1795627.html</id><title type="text">微软企业生产力大学培训课程_8月</title><summary type="text">Microsoft SharePoint 2010, Project Server 2010, Exchange 2010, OCS 2010, Office 2010, Visio 2010, SQL 2008系列培训课程。 微软生产力大学：http://msbpiou.e-service.net.cn/pages/default.aspx</summary><published>2010-08-09T03:52:00Z</published><updated>2010-08-09T03:52:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/08/09/1795627.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/08/09/1795627.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style="font-family: Verdana;"&gt;Microsoft SharePoint 2010, Project Server 2010, Exchange 2010, OCS 2010, Office 2010, Visio 2010, SQL 2008&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;系列培训课程。&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Times New Roman; font-size: 12pt;"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style="font-family: 宋体;"&gt;微软生产力大学：&lt;a href="http://msbpiou.e-service.net.cn/pages/default.aspx"&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;http://msbpiou.e-service.net.cn/pages/default.aspx &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Times New Roman; font-size: 12pt;"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="1807" width="698" src="http://images.cnblogs.com/cnblogs_com/dwang/080910_1152_81.png" /&gt;&lt;span style="font-family: Times New Roman; font-size: 12pt;"&gt; &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/dwang/aggbug/1795627.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/08/09/1795627.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/07/13/1776681.html</id><title type="text">招聘：赴微软工作SharePoint技术专家(V-，北京)</title><summary type="text">致：园子里研究SharePoint技术的各位兄弟姐妹： 如果你具有以下特质，并且希望能够在微软公司工作（V-身份），请迅速与我取得联系（wang.zhiyong@gmail.com）。 沟通良好，有团队合作精神； 熟悉SharePoint2007/2010产品的安装、部署和使用； 熟悉SQL Server； 有两年以上.NET开发经验，熟练使用Visual Studio和C#语言； 至少2年以上S...</summary><published>2010-07-13T10:09:00Z</published><updated>2010-07-13T10:09:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/07/13/1776681.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/07/13/1776681.html"/><content type="html">&lt;p&gt;致：园子里研究SharePoint技术的各位兄弟姐妹： &lt;/p&gt;&#xD;
&lt;p&gt;如果你具有以下特质，并且希望能够在微软公司工作（V-身份），请迅速与我取得联系（&lt;a href="mailto:wang.zhiyong@gmail.com"&gt;wang.zhiyong@gmail.com&lt;/a&gt;）。 &lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;沟通良好，有团队合作精神； &lt;/li&gt;&#xD;
&lt;li&gt;熟悉SharePoint2007/2010产品的安装、部署和使用； &lt;/li&gt;&#xD;
&lt;li&gt;熟悉SQL Server； &lt;/li&gt;&#xD;
&lt;li&gt;有两年以上.NET开发经验，熟练使用Visual Studio和C#语言； &lt;/li&gt;&#xD;
&lt;li&gt;至少2年以上SharePoint开发经验； &lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1776681.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/07/13/1776681.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/06/25/1765226.html</id><title type="text">SharePoint 2010: 如何使用Word Automation Services开发应用</title><summary type="text">内容使用Word Automation Services更改文档格式 一个使用Word Automation Services的场景 Word Automation Services工作原理 构建Word Automation Services应用 监控文档转换状态 辨别转换失败的文档 转换完成后删除源文件 与Open XML SDK进行集成 总结 其它资源 源代码下载 使用Word Automa...</summary><published>2010-06-25T07:28:00Z</published><updated>2010-06-25T07:28:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/06/25/1765226.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/06/25/1765226.html"/><content type="html">&lt;p&gt;&lt;strong&gt;内容&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;使用Word Automation Services更改文档格式 &lt;/li&gt;&#xD;
&lt;li&gt;一个使用Word Automation Services的场景 &lt;/li&gt;&#xD;
&lt;li&gt;Word Automation Services工作原理 &lt;/li&gt;&#xD;
&lt;li&gt;构建Word Automation Services应用 &lt;/li&gt;&#xD;
&lt;li&gt;监控文档转换状态 &lt;/li&gt;&#xD;
&lt;li&gt;辨别转换失败的文档 &lt;/li&gt;&#xD;
&lt;li&gt;转换完成后删除源文件 &lt;/li&gt;&#xD;
&lt;li&gt;与Open XML SDK进行集成 &lt;/li&gt;&#xD;
&lt;li&gt;总结 &lt;/li&gt;&#xD;
&lt;li&gt;其它资源 &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=odcsp14ta&amp;amp;ReleaseId=4491"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint21.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=odcsp14ta&amp;amp;ReleaseId=4491"&gt;源代码下载&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用Word Automation Services更改文档格式 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;当我们使用&lt;a href="http://msdn.microsoft.com/en-us/library/bb448854.aspx"&gt;Open XML SDK 2.0 for Microsoft Office&lt;/a&gt;时，有些任务是比较困难的。比如：重新编排页码，将文档转换为诸如PDF等的其它格式，或者更新文档目录表、字段，以及文档中的其它动态内容。而SharePoint 2010提供的Word Automation Services新功能就是用来解决这些问题的。 &lt;/p&gt;&#xD;
&lt;p&gt;Word Automation Services是一个共享服务，它无需人员参与，可以在服务器端执行文档格式转换以及其它重要功能。其最初设计理念是在服务器端以可靠和可预测的方式处理多个文档。 &lt;/p&gt;&#xD;
&lt;p&gt;我们可以使用Word Automation Services将Open XML WordprocessingML格式转换成其它格式。比如：可以将多个文档转换成PDF格式然后发送到打印机的打印池，或者通过邮件将PDF文档发送给客户，也可以将其它格式的文档（如：HTML，Word 97-2003二进制格式）转换成Open XML work-processing文档。 &lt;/p&gt;&#xD;
&lt;p&gt;除了进行文档格式转换，Word Automation Services还提供了其它一些重要功能。比如：更新文档中的字段，将altChunk内容转换成使用正常格式的段落。如果我们使用Open XML SDK执行这些工作是非常困难的，但是Word Automation Services做这些工作就非常容易。以前，我们使用Word Automation Services为客户端执行这些工作，但这是有问题的。Word客户端更适合进行交互式文档编写，而不是用来在服务器端进行多文档处理的。如果在Word中执行这些任务，Word往往会显示错误提示框，而且如果服务器自动操作Word客户端，又没有用户响应对话框，这样线程就无法停止。这是一个与Word自动化相关的问题，有一篇KB专门介绍，&lt;a target="_blank" href="http://support.microsoft.com/kb/257757"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Considerations for Server-side Automation of Office&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-family: 宋体; font-size: 10pt;"&gt;。&lt;/span&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;一个使用Word Automation Services的场景 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面这个场景展示了如何使用Word Automation Services在服务器端自动处理文档。 &lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;某位专家遵循一定的规范创建了一些Word模板，她或许会使用内容控制为这些模板提供一些使用指导，这为在文档生成过程中确定数据应该出现在文档模板的哪些位置提供了良好的用户体验和可靠的编程方法。通常，这些文档模板保存在SharePoint文档库里。 &lt;/li&gt;&#xD;
&lt;li&gt;运行在服务器端的程序把文档模板和数据结合在一起，形成Open XML WordprocessingML (DOCX)文档。最好的方法是使用&lt;a href="http://msdn.microsoft.com/zh-cn/library/bb448854.aspx"&gt;Open XML SDK 2.0 for Microsoft Office&lt;/a&gt;编写这个程序，因为这个SDK专门用来在服务器端生成文档。这些文档存放在SharePoint文档库里。 &lt;/li&gt;&#xD;
&lt;li&gt;文档自动生成后，可能需要被打印，然后转换为WordprocessingML、PDF、XPS或MHTML格式再通过邮件发送给一系列用户。 &lt;/li&gt;&#xD;
&lt;li&gt;作为转换工作的一部分，我们可以使用Word Automation Services更新文档中的字段，比如：文档目录表。 &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;一起使用&lt;a href="http://msdn.microsoft.com/zh-cn/library/bb448854.aspx"&gt;Open XML SDK 2.0 for Microsoft Office&lt;/a&gt;以及Word Automation Services可以创建丰富的、端到端解决方案，而无须自动化Word客户端应用。 &lt;/p&gt;&#xD;
&lt;p&gt;Word Automation Services的一个突出优点是可以进行扩展升级，而Word客户端应用无法做到这点，我们可以配置Word Automation Services使用多个处理器，如果需要，还可以配置为负载均衡。 &lt;/p&gt;&#xD;
&lt;p&gt;另外一个突出优点是，Word Automation Services在文档布局（包括分页排版）方面保持了与Word客户端近乎完全一致的体验。无论文档是在服务器端处理的，还是在客户端处理的，其布局都是完全一致的。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;支持的源文档格式 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Open XML File Format documents (.docx, .docm, .dotx, .dotm) &lt;/li&gt;&#xD;
&lt;li&gt;Word 97-2003 documents (.doc, .dot) &lt;/li&gt;&#xD;
&lt;li&gt;Rich Text Format files (.rtf) &lt;/li&gt;&#xD;
&lt;li&gt;Single File Web Pages (.mht, .mhtml) &lt;/li&gt;&#xD;
&lt;li&gt;Word 2003 XML Documents (.xml) &lt;/li&gt;&#xD;
&lt;li&gt;Word XML Document (.xml) &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;支持的目标文档格式 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Portable Document Format (.pdf) &lt;/li&gt;&#xD;
&lt;li&gt;Open XML Paper Specification (.xps) &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Word Automation Services的其它功能 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;除了加载文档并将文档保存为其它格式外， Word Automation Services还具有其它一些功能。 &lt;/p&gt;&#xD;
&lt;p&gt;我们可以使用Word Automation Services更新文档目录、table of authorities以及索引字段，这在生成文档时非常重要。如果文档在生成后，其目录表未能正确更新，那么确定文档的分页将是非常困难的工作，而Word Automation Services可以非常容易地处理这个工作。 &lt;/p&gt;&#xD;
&lt;p&gt;Open XML word-processing文档包含各式各样的字段类型，使用这些字段类型我们可以为文档动态添加内容。我们可以使用Word Automation Services重新计算所有的字段。比如：为文档添加一个插入当前日期的字段类型。这样当所有字段被更新时，其关联的内容也随之被更新，这样文档就可以在字段所在位置显示当前日期。 &lt;/p&gt;&#xD;
&lt;p&gt;使用内容控制的一个最有效途径是将内容绑定到一个自定义XML元素。关于如何进行绑定，请参考&lt;a href="http://msdn.microsoft.com/en-us/library/ff433638.aspx"&gt;Building Document Generation Systems from Templates with Word 2010 and Word 2007&lt;/a&gt;，以及其它一些资源。通过替换自定义XML元素可以将绑定内容控件的内容进行更新，而无须更改文档主体。文档主体包含了所有绑定内容控件的缓存值，如果只是替换自定义XML元素，文档主体中的缓存值是不会被更新的。如果用户只是用Word客户端应用查看就不会有这个问题，但是，如果要更深地处理WordprocessingML markup，我们就必须更新文档主体中的缓存值。而Word Automation Services正好可以做这项工作。 &lt;/p&gt;&#xD;
&lt;p&gt;更换以altChunk元素表示的格式内容，是将HTML内容导入到WordprocessingML文档的好办法。&lt;a href="http://msdn.microsoft.com/en-us/library/ff433638.aspx"&gt;Building Document Generation Systems from Templates with Word 2010 and Word 2007&lt;/a&gt;探讨了如何更换格式内容，使用方法，并且提供了其它开始资源。但是，这需要一直到你打开和保存包含altChunk元素的文档时才可以。这个文档包含HTML，而没有常规的的WordprocessingML markup，比如：段落，runs 以及文本。现在我们可以使用Word Automation Services导入HTML（或其它格式的可更换内容），然后将它们转换为WordprocessingML markup，这样WordprocessingML段落就有了styles。 &lt;/p&gt;&#xD;
&lt;p&gt;也可以把以往的Word版本格式进行转换。比如，要构建的企业级应用有几千个用户，而他们当中就有一些人在Word 2007或Word 2003编辑Open XML文档，这时候，我们就可以将Open XML文档转换成与Word 2007或Word 2003兼容的格式。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Word Automation Services的不足 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Word Automation Service缺少打印功能，但是，我们可以直接将WordprocessingML文档转换为PDF或XPS格式然后再打印。 &lt;/p&gt;&#xD;
&lt;p&gt;有人可能会问，是否可以不采购和安装SharePoint Server 2010就可以使用Word Automation Services呢？答案是：Word Automation Services依赖于SharePoint 2010的其它功能，它只是SharePoint 2010的一个功能，我们购买并且安装SharePoint Server 2010才可以使用它。SharePoint 2010的标准版和企业版都包含Word Automation Services。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Word Automation Services工作原理 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;默认情况下，Word Automation Services随SharePoint Server 2010一起安装并且运行。如果在服务器场中使用SharePoint 2010，必须专门启用Word Automation Services。 &lt;/p&gt;&#xD;
&lt;p&gt;要使用Word Automation Services，可以使用其编程接口启动转换工作（conversion job），对于每项转换工作需要指定要转换的文件、文件夹或者文档库。转换工作启动时，根据用户的配置信息，Word Automation Services在每台服务器上启动指定数量的转换线程。可以指定转换工作的执行频率，还可以指定每个转换线程执行的转换的数量。另外，还可以Word Automation Services可以使用的最大内存的百分比。 &lt;/p&gt;&#xD;
&lt;p&gt;可以配置Word Automation Services，以保证其不过分使用SharePoint服务器的资源，你可以根据对SharePoint服务器的使用期望来决定该如何配置Word Automation Services。如果只是用Word Automation Services执行文档转换，你可以考虑让Word Automation Services占用大部分的processor time。当然，如果要执行的是低优先级的后台转换，你需要相应进行配置。 &lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table border="0" style="border-collapse: collapse; background: #fcfec5;"&gt;&#xD;
&lt;colgroup&gt;&lt;col style="width: 598px;"&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody valign="top"&gt;&#xD;
&lt;tr style="height: 21px;"&gt;&#xD;
&lt;td style="padding-top: 10px; padding-left: 11px; padding-bottom: 1px; padding-right: 11px; border: solid #bbbbbb 0.25pt;"&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint22.gif" /&gt;&lt;span style="color: black; font-size: 11pt;"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;重要提示&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-top: 1px; padding-left: 11px; padding-bottom: 10px; padding-right: 11px; border-top: none; border-left: solid #bbbbbb 0.25pt; border-bottom: solid #bbbbbb 0.25pt; border-right: solid #bbbbbb 0.25pt;"&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;建议worker process占用的处理器的数量绝对不要超过服务器减一。比如：对于4核服务器i，转换线程最多不能超过3个。&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;如果是在服务器场中，worker process占用的处理器数量不超过服务器场中有最少处理器那台服务器的处理器减一。&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;建议每分钟每个worker process最多处理90个文档转换。&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;编写代码除了可以启动转换实例外，还可以监控转换过程，这样当较大的转换工作完成时就可以同志用户或者发出提示。 &lt;/p&gt;&#xD;
&lt;p&gt;Word Automation Services还可以进行4个方面的转换配置。 &lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;限制支持的文档格式的数量。 &lt;/li&gt;&#xD;
&lt;li&gt;设置转换线程重启时可以转换的文档的数量。这非常有价值，因为无效文档会导致Word Automation Services消耗过多的内存资源。 &lt;/li&gt;&#xD;
&lt;li&gt;设置Word Automation Services尝试转换文档的次数。默认情况下，这个值为2，也就是说，如果Word Automation Services转换某个文档失败，它只会再尝试一次(在当时那个conversion job中)。 &lt;/li&gt;&#xD;
&lt;li&gt;设置转换线程开始后多久才开始监控。这非常有价值，因为Word Automation Services可以监控转换以确保每个转换进程没有停滞。 &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 16pt;"&gt;配置Word Automation Services &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;无论是否安装服务器场，默认情况下，Word Automation Services都随SharePoint Server 2010安装并运行。但开发人员可能需要更改其配置以获取更好的开发体验。默认情况下，转换线程每15分钟执行一次，如果是为了测试代码，更改为每分钟允许一次更好。另外，在测试过程中让Word Automation Services使用更多的资源是更好的主意。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;调整转换线程每分钟执行一次&lt;span style="color: #3f529c; font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 宋体;"&gt;打开&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;SharePoint 2010 Central Administration&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;SharePoint 2010 Central Administration&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;首页，点击&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;&lt;strong&gt;Manage Service Applications&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;Service Applications&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;管理页，服务是按字母排序的。点击&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;&lt;strong&gt;Word Automation Services&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。如果&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;Word Automation Services&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;是手动安装的，可能名称会有所不同。&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 宋体;"&gt;在&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;Word Automation Services&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;管理页，相应配置即可。&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: 宋体;"&gt;点击&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;&lt;strong&gt;OK&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;strong&gt;构建Word Automation Services应用 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Because Word Automation Services is a service of SharePoint Server 2010, you can only use it in an application that runs directly on a SharePoint Server. You must build the application as a farm solution. You cannot use Word Automation Services from a sandboxed solution. &lt;/p&gt;&#xD;
&lt;p&gt;A convenient way to use Word Automation Services is to write a web service that you can use from client applications. &lt;/p&gt;&#xD;
&lt;p&gt;However, the easiest way to show how to write code that uses Word Automation Services is to build a console application. You must build and run the console application on the SharePoint Server, not on a client computer. The code to start and monitor conversion jobs is identical to the code that you would write for a Web Part, a workflow, or an event handler. Showing how to use Word Automation Services from a console application enables us to discuss the API without adding the complexities of a Web Part, an event handler, or a workflow. &lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table border="0" style="border-collapse: collapse; background: #fcfec5;"&gt;&#xD;
&lt;colgroup&gt;&lt;col style="width: 598px;"&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody valign="top"&gt;&#xD;
&lt;tr style="height: 21px;"&gt;&#xD;
&lt;td style="padding-top: 10px; padding-left: 11px; padding-bottom: 1px; padding-right: 11px; border: solid #bbbbbb 0.25pt;"&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint23.gif" /&gt;&lt;span style="color: black; font-size: 11pt;"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;重要提示&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;: &lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-top: 1px; padding-left: 11px; padding-bottom: 10px; padding-right: 11px; border-top: none; border-left: solid #bbbbbb 0.25pt; border-bottom: solid #bbbbbb 0.25pt; border-right: solid #bbbbbb 0.25pt;"&gt;&#xD;
&lt;p&gt;Note that the following sample applications call&amp;nbsp;&lt;a href="http://msdn.microsoft.com/zh-cn/library/d00bd51t.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Sleep&lt;/span&gt;&lt;/a&gt; so that&amp;nbsp;the&amp;nbsp;examples query&amp;nbsp;for status every five seconds. This would not be the best approach when you write code that you intend to deploy on production servers. Instead, you want to write a workflow with delay activity. &lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 11pt;"&gt;To build the application&lt;span style="color: #3f529c; font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Start Microsoft Visual Studio 2010. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;On the &lt;strong&gt;File&lt;/strong&gt; menu, point to &lt;strong&gt;New&lt;/strong&gt;, and then click &lt;strong&gt;Project&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;In the &lt;strong&gt;New Project&lt;/strong&gt; dialog box, in the &lt;strong&gt;Recent Template&lt;/strong&gt; pane, expand &lt;strong&gt;Visual C#&lt;/strong&gt;, and then click &lt;strong&gt;Windows&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;To the right side of the &lt;strong&gt;Recent Template&lt;/strong&gt; pane, click &lt;strong&gt;Console Application&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;By default, Visual Studio creates a project that targets .NET Framework 4.0. However, you must target .NET Framework 3.5. From the list at the upper part of the &lt;strong&gt;File Open&lt;/strong&gt; dialog box, select .NET Framework 3.5. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;In the &lt;strong&gt;Name&lt;/strong&gt; box, type the name that you want to use for your project, such as FirstWordAutomationServicesApplication. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;In the &lt;strong&gt;Location&lt;/strong&gt; box, type the location where you want to place the project. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;Figure 1. Creating a solution in the New Project dialog box&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint24.jpg" /&gt;&lt;/span&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to create the solution. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;By default, Visual Studio 2010 creates projects that target x86 CPUs, but to build SharePoint Server applications, you must target any CPU. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;If you are building a Microsoft Visual C# application, in Solution Explorer window, right-click the project, and then click &lt;strong&gt;Properties&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;In the project properties window, click &lt;strong&gt;Build&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Point to the &lt;strong&gt;Platform Target&lt;/strong&gt; list, and select &lt;strong&gt;Any CPU&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;Figure 2. Target Any CPU when building a C# console application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint25.jpg" /&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;If you are building a Microsoft Visual Basic .NET Framework application, in the project properties window, click &lt;strong&gt;Compile&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&#xD;
&lt;li&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Figure 3. Compile options for a Visual Basic application&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint26.jpg" /&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Click &lt;strong&gt;Advanced Compile Options&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;Figure 4. Advanced Compiler Settings dialog box&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint27.jpg" /&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Point to the &lt;strong&gt;Platform Target&lt;/strong&gt; list, and then click &lt;strong&gt;Any CPU&lt;/strong&gt;. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;To add a reference to the Microsoft.Office.Word.Server assembly, on the Project menu, click &lt;strong&gt;Add Reference&lt;/strong&gt; to open the Add Reference dialog box. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Select the .NET tab, and add the component named Microsoft Office 2010 component. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;Figure 5. Adding a reference to Microsoft Office 2010 component&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint28.jpg" /&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Next, add a reference to the Microsoft.SharePoint assembly. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;Figure 6. Adding a reference to Microsoft SharePoint&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint29.jpg" /&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/span&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;The following examples provide the complete C# and Visual Basic listings for the simplest Word Automation Services application. &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; System; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; System.Collections.Generic; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; System.Linq; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; System.Text; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; Microsoft.SharePoint; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; Microsoft.Office.Word.Server.Conversions; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;class&lt;span style="color: black;"&gt; Program &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;static&lt;span style="color: black;"&gt; &lt;span style="color: blue;"&gt;void&lt;span style="color: black;"&gt; Main(&lt;span style="color: blue;"&gt;string&lt;span style="color: black;"&gt;[] args) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;string&lt;span style="color: black;"&gt; siteUrl = &lt;span style="color: #a31515;"&gt;"http://localhost"&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: green;"&gt;// If you manually installed Word automation services, then replace the name&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: green;"&gt;// in the following line with the name that you assigned to the service when&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: green;"&gt;// you installed it.&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;string&lt;span style="color: black;"&gt; wordAutomationServiceName = &lt;span style="color: #a31515;"&gt;"Word Automation Services"&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;using&lt;span style="color: black;"&gt; (SPSite spSite = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; SPSite(siteUrl)) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJob job = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJob(wordAutomationServiceName); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.UserToken = spSite.UserToken; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.UpdateFields = &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputFormat = SaveFormat.PDF; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.AddFile(siteUrl + &lt;span style="color: #a31515;"&gt;"/Shared%20Documents/Test.docx"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;siteUrl + &lt;span style="color: #a31515;"&gt;"/Shared%20Documents/Test.pdf"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Start(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table border="0" style="border-collapse: collapse; background: #fcfec5;"&gt;&#xD;
&lt;colgroup&gt;&lt;col style="width: 598px;"&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody valign="top"&gt;&#xD;
&lt;tr style="height: 21px;"&gt;&#xD;
&lt;td style="padding-top: 10px; padding-left: 11px; padding-bottom: 1px; padding-right: 11px; border: solid #bbbbbb 0.25pt;"&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint210.gif" /&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 11pt;"&gt;&lt;strong&gt;Note: &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td style="padding-top: 1px; padding-left: 11px; padding-bottom: 10px; padding-right: 11px; border-top: none; border-left: solid #bbbbbb 0.25pt; border-bottom: solid #bbbbbb 0.25pt; border-right: solid #bbbbbb 0.25pt;"&gt;&#xD;
&lt;p&gt;Replace the URL assigned to &lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;em&gt;siteUrl&lt;/em&gt;&lt;/span&gt; with the URL to the SharePoint site. &lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 11pt;"&gt;To build and run the example&lt;span style="color: #3f529c; font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Add a Word document named Test.docx to the Shared Documents folder in the SharePoint site. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Build and run the example. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;After waiting one minute for the conversion process to run, navigate to the Shared Documents folder in the SharePoint site, and refresh the page. The document library now contains a new PDF document, Test.pdf. &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;strong&gt;监控文档转换状态 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;In many scenarios, you want to monitor the status of conversions, to inform the user when the conversion process is complete, or to process the converted documents in additional ways. You can use the &lt;a href="http://msdn.microsoft.com/zh-cn/library/microsoft.office.word.server.conversions.conversionjobstatus.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;ConversionJobStatus&lt;/span&gt;&lt;/a&gt; class to query Word Automation Services about the status of a conversion job. You pass the name of the &lt;a href="http://msdn.microsoft.com/zh-cn/library/microsoft.office.word.server.service.wordserviceapplicationproxy.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;WordServiceApplicationProxy&lt;/span&gt;&lt;/a&gt; class as a string (by default, "Word Automation Services"), and the conversion job identifier, which you can get from the &lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;ConversionJob&lt;/span&gt; object. You can also pass a GUID that specifies a tenant partition. However, if the SharePoint Server farm is not configured for multiple tenants, you can pass &lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;null&lt;/strong&gt;&lt;/span&gt; (Nothing in Visual Basic) as the argument for this parameter. &lt;/p&gt;&#xD;
&lt;p&gt;After you instantiate a &lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;ConversionJobStatus&lt;/strong&gt;&lt;/span&gt; object, you can access several properties that indicate the status of the conversion job. The following are the three most interesting properties. &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 11pt;"&gt;ConversionJobStatus Properties&lt;span style="color: #3f529c; font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&#xD;
&lt;table border="0" style="border-collapse: collapse;"&gt;&#xD;
&lt;colgroup&gt;&lt;col style="width: 112px;"&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;col style="width: 472px;"&gt;&lt;/col&gt;&lt;col&gt;&lt;/col&gt;&lt;/colgroup&gt;&#xD;
&lt;tbody valign="top"&gt;&#xD;
&lt;tr style="background: #e5e5e5; height: 21px;"&gt;&#xD;
&lt;td style="border: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;Property &lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="border-top: solid #bbbbbb 0.75pt; border-left: none; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;Return Value &amp;nbsp;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="background: white;"&gt;&#xD;
&lt;td style="border-top: none; border-left: solid #bbbbbb 0.75pt; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Count&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="border-top: none; border-left: none; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Number of documents currently in the conversion job.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="background: white;"&gt;&#xD;
&lt;td style="border-top: none; border-left: solid #bbbbbb 0.75pt; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Succeeded&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="border-top: none; border-left: none; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;Number of documents successfully converted.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr style="background: white;"&gt;&#xD;
&lt;td style="border-top: none; border-left: solid #bbbbbb 0.75pt; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Failed&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td style="border-top: none; border-left: none; border-bottom: solid #bbbbbb 0.75pt; border-right: solid #bbbbbb 0.75pt; padding: 4px;"&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;The number of documents that failed conversion.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Whereas the first example specified a single document to convert, the following example converts all documents in a specified document library. You have the option of creating all converted documents in a different document library than the source library, but for simplicity, the following example specifies the same document library for both the input and output document libraries. In addition, the following example specifies that the conversion job should overwrite the output document if it already exists. &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Starting conversion job"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJob job = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJob(wordAutomationServiceName); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.UserToken = spSite.UserToken; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.UpdateFields = &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputFormat = SaveFormat.PDF; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPList listToConvert = spSite.RootWeb.Lists[&lt;span style="color: #a31515;"&gt;"Shared Documents"&lt;span style="color: black;"&gt;]; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.AddLibrary(listToConvert, listToConvert); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Start(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Conversion job started"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJobStatus status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus(wordAutomationServiceName, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.JobId, &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Number of documents in conversion job: {0}"&lt;span style="color: black;"&gt;, status.Count); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;while&lt;span style="color: black;"&gt; (&lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Thread.Sleep(5000); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus(wordAutomationServiceName, job.JobId, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;if&lt;span style="color: black;"&gt; (status.Count == status.Succeeded + status.Failed) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Completed, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;break&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"In progress, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;To run this example, add some WordprocessingML documents in the Shared Documents library. When you run this example, you see output similar to this code snippet, &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;识别转换失败的文档 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;You may want to determine which documents failed conversion, perhaps to inform the user, or take remedial action such as removing the invalid document from the input document library. You can call the GetItems method, which returns a collection of ConversionItemInfo objects. When you call the &lt;strong&gt;GetItems&lt;/strong&gt; method, you pass a parameter that specifies whether you want to retrieve a collection of failed conversions or successful conversions. The following example shows how to do this. &lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Starting conversion job"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJob job = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJob(wordAutomationServiceName); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.UserToken = spSite.UserToken; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.UpdateFields = &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputFormat = SaveFormat.PDF; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPList listToConvert = spSite.RootWeb.Lists[&lt;span style="color: #a31515;"&gt;"Shared Documents"&lt;span style="color: black;"&gt;]; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.AddLibrary(listToConvert, listToConvert); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Start(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Conversion job started"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJobStatus status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus(wordAutomationServiceName, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.JobId, &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Number of documents in conversion job: {0}"&lt;span style="color: black;"&gt;, status.Count); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;while&lt;span style="color: black;"&gt; (&lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Thread.Sleep(5000); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus(wordAutomationServiceName, job.JobId, &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;if&lt;span style="color: black;"&gt; (status.Count == status.Succeeded + status.Failed) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Completed, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ReadOnlyCollection&amp;lt;ConversionItemInfo&amp;gt; failedItems = &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.GetItems(ItemTypes.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;foreach&lt;span style="color: black;"&gt; (&lt;span style="color: blue;"&gt;var&lt;span style="color: black;"&gt; failedItem &lt;span style="color: blue;"&gt;in&lt;span style="color: black;"&gt; failedItems) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Failed item: Name:{0}"&lt;span style="color: black;"&gt;, failedItem.InputFile); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;break&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"In progress, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, status.Succeeded, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: black; font-size: 10pt;"&gt;&lt;span style="font-family: Segoe UI;"&gt;To run this example, create an invalid document and upload it to the document library. An easy way to create an invalid document is to rename the WordprocessingML document, appending .zip to the file name. Then delete the main document part (known as &lt;/span&gt;&lt;span style="font-family: Courier New;"&gt;document.xml&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt;), which is in the Word folder of the package. Rename the document, removing the .zip extension so that it contains the normal .docx extension. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;代码输出如下。&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;a name="CodeSpippet4"&gt;&lt;/a&gt;Starting conversion job &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Conversion job started &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Number of documents in conversion job: 5 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;In progress, Successful: 0, Failed: 0 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;In progress, Successful: 0, Failed: 0 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;In progress, Successful: 4, Failed: 0 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;In progress, Successful: 4, Failed: 0 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;In progress, Successful: 4, Failed: 0 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Completed, Successful: 4, Failed: 1 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Failed item: Name:http://intranet.contoso.com/Shared%20Documents/IntentionallyInvalidDocument.docx &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;另外一种监控转换过程的方法是使用&lt;span style="font-family: Segoe UI;"&gt;SharePoint List&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; Event &lt;/span&gt;H&lt;span style="font-family: Segoe UI;"&gt;andler&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;捕捉转换后的文档添加到文档库时的动作。&lt;/span&gt;&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;转换完成后删除源文件 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;文档转换完毕后，如果要删除源，可以使用下面的示例代码。&lt;span style="font-family: Segoe UI;"&gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Starting conversion job"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJob job = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJob(wordAutomationServiceName); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.UserToken = spSite.UserToken; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.UpdateFields = &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputFormat = SaveFormat.PDF; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPFolder folderToConvert = spSite.RootWeb.GetFolder(&lt;span style="color: #a31515;"&gt;"Shared Documents"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.AddFolder(folderToConvert, folderToConvert, &lt;span style="color: blue;"&gt;false&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Start(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Conversion job started"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJobStatus status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus(wordAutomationServiceName, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.JobId, &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Number of documents in conversion job: {0}"&lt;span style="color: black;"&gt;, status.Count); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;while&lt;span style="color: black;"&gt; (&lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Thread.Sleep(5000); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus(wordAutomationServiceName, job.JobId, &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;if&lt;span style="color: black;"&gt; (status.Count == status.Succeeded + status.Failed) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Completed, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Deleting only items that successfully converted"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ReadOnlyCollection&amp;lt;ConversionItemInfo&amp;gt; convertedItems = &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.GetItems(ItemTypes.Succeeded); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;foreach&lt;span style="color: black;"&gt; (&lt;span style="color: blue;"&gt;var&lt;span style="color: black;"&gt; convertedItem &lt;span style="color: blue;"&gt;in&lt;span style="color: black;"&gt; convertedItems) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Deleting item: Name:{0}"&lt;span style="color: black;"&gt;, convertedItem.InputFile); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;folderToConvert.Files.Delete(convertedItem.InputFile); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;break&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"In progress, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt; &lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("Starting conversion job") &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Dim job As ConversionJob = New ConversionJob(wordAutomationServiceName) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.UserToken = spSite.UserToken &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.UpdateFields = True &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputFormat = SaveFormat.PDF &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Dim folderToConvert As SPFolder = spSite.RootWeb.GetFolder("Shared Documents") &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.AddFolder(folderToConvert, folderToConvert, False) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Start() &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("Conversion job started") &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Dim status As ConversionJobStatus = _ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;New ConversionJobStatus(wordAutomationServiceName, job.JobId, Nothing) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("Number of documents in conversion job: {0}", status.Count) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;While True &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Thread.Sleep(5000) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status = New ConversionJobStatus(wordAutomationServiceName, job.JobId, _ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Nothing) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;If status.Count = status.Succeeded + status.Failed Then &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("Completed, Successful: {0}, Failed: {1}", _ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("Deleting only items that successfully converted") &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Dim convertedItems As ReadOnlyCollection(Of ConversionItemInfo) = _ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.GetItems(ItemTypes.Succeeded) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;For Each convertedItem In convertedItems &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("Deleting item: Name:{0}", convertedItem.InputFile) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;folderToConvert.Files.Delete(convertedItem.InputFile) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Next &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Exit While &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;End If &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine("In progress, Successful: {0}, Failed: {1}", &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed) &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;End While &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;与Open XML SDK进行集成 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;The power of using Word Automation Services becomes clear when you use it in combination with the &lt;a href="http://msdn.microsoft.com/zh-cn/library/bb448854.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Welcome to the Open XML SDK 2.0 for Microsoft Office&lt;/span&gt;&lt;/a&gt;. You can programmatically modify a document in a document library by using the &lt;a href="http://msdn.microsoft.com/zh-cn/library/bb448854.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Welcome to the Open XML SDK 2.0 for Microsoft Office&lt;/span&gt;&lt;/a&gt;, and then use Word Automation Services to perform one of the difficult tasks by using the Open XML SDK. A common need is to programmatically generate a document, and then generate or update the table of contents of the document. Consider the following document, which contains a table of contents.&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Figure 7. Document with a table of contents&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint211.jpg" /&gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Let's assume you want to modify this document, adding content that should be included in the table of contents. This next example takes the following steps. &lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;Opens the site and retrieves the &lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;Test.docx&lt;/span&gt; document by using a Collaborative Application Markup Language (CAML) query. &lt;/li&gt;&#xD;
&lt;li&gt;Opens the document by using the Open XML SDK 2.0, and adds a new paragraph styled as &lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;&lt;strong&gt;Heading 1&lt;/strong&gt;&lt;/span&gt; at the beginning of the document. &lt;/li&gt;&#xD;
&lt;li&gt;Starts a conversion job, converting &lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;Test.docx&lt;/span&gt; to &lt;span style="color: black; font-family: Courier New; font-size: 10pt;"&gt;TestWithNewToc.docx&lt;/span&gt;. It waits for the conversion to complete, and reports whether it was converted successfully. &lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p style="background: #f2f2f2;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Querying for Test.docx"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPList list = spSite.RootWeb.Lists[&lt;span style="color: #a31515;"&gt;"Shared Documents"&lt;span style="color: black;"&gt;]; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPQuery query = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; SPQuery(); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;query.ViewFields = &lt;span style="color: #a31515;"&gt;@"&amp;lt;FieldRef Name='FileLeafRef' /&amp;gt;"&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;query.Query = &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: #a31515;"&gt;@"&amp;lt;Where&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 10pt;"&gt;&amp;lt;Eq&amp;gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 10pt;"&gt;&amp;lt;FieldRef Name='FileLeafRef' /&amp;gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 10pt;"&gt;&amp;lt;Value Type='Text'&amp;gt;Test.docx&amp;lt;/Value&amp;gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 10pt;"&gt;&amp;lt;/Eq&amp;gt; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: #a31515; font-family: Consolas; font-size: 10pt;"&gt;&amp;lt;/Where&amp;gt;"&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPListItemCollection collection = list.GetItems(query); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;if&lt;span style="color: black;"&gt; (collection.Count != 1) &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Test.docx not found"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Environment.Exit(0); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Opening"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;SPFile file = collection[0].File; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;byte&lt;span style="color: black;"&gt;[] byteArray = file.OpenBinary(); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;using&lt;span style="color: black;"&gt; (MemoryStream memStr = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; MemoryStream()) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;memStr.Write(byteArray, 0, byteArray.Length); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;using&lt;span style="color: black;"&gt; (WordprocessingDocument wordDoc = &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;WordprocessingDocument.Open(memStr, &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;)) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Document document = wordDoc.MainDocumentPart.Document; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Paragraph firstParagraph = document.Body.Elements&amp;lt;Paragraph&amp;gt;() &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;.FirstOrDefault(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;if&lt;span style="color: black;"&gt; (firstParagraph != &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Paragraph newParagraph = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; Paragraph( &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ParagraphProperties( &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ParagraphStyleId() { Val = &lt;span style="color: #a31515;"&gt;"Heading1"&lt;span style="color: black;"&gt; }), &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; Run( &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; Text(&lt;span style="color: #a31515;"&gt;"About the Author"&lt;span style="color: black;"&gt;))); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Paragraph aboutAuthorParagraph = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; Paragraph( &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; Run( &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; Text(&lt;span style="color: #a31515;"&gt;"Eric White"&lt;span style="color: black;"&gt;))); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;firstParagraph.Parent.InsertBefore(newParagraph, firstParagraph); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;firstParagraph.Parent.InsertBefore(aboutAuthorParagraph, &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;firstParagraph); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Saving"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;string&lt;span style="color: black;"&gt; linkFileName = file.Item[&lt;span style="color: #a31515;"&gt;"LinkFilename"&lt;span style="color: black;"&gt;] &lt;span style="color: blue;"&gt;as&lt;span style="color: black;"&gt; &lt;span style="color: blue;"&gt;string&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;file.ParentFolder.Files.Add(linkFileName, memStr, &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Starting conversion job"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJob job = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJob(wordAutomationServiceName); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.UserToken = spSite.UserToken; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.UpdateFields = &lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Settings.OutputFormat = SaveFormat.Document; &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.AddFile(siteUrl + &lt;span style="color: #a31515;"&gt;"/Shared%20Documents/Test.docx"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;siteUrl + &lt;span style="color: #a31515;"&gt;"/Shared%20Documents/TestWithNewToc.docx"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;job.Start(); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"After starting conversion job"&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 10pt;"&gt;while&lt;span style="color: black;"&gt; (&lt;span style="color: blue;"&gt;true&lt;span style="color: black;"&gt;) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Thread.Sleep(5000); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Polling..."&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;ConversionJobStatus status = &lt;span style="color: blue;"&gt;new&lt;span style="color: black;"&gt; ConversionJobStatus( &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;wordAutomationServiceName, job.JobId, &lt;span style="color: blue;"&gt;null&lt;span style="color: black;"&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;if&lt;span style="color: black;"&gt; (status.Count == status.Succeeded + status.Failed) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;{ &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;Console.WriteLine(&lt;span style="color: #a31515;"&gt;"Completed, Successful: {0}, Failed: {1}"&lt;span style="color: black;"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;status.Succeeded, status.Failed); &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;&lt;span style="color: blue;"&gt;break&lt;span style="color: black;"&gt;; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="background: #f2f2f2; margin-left: 18pt;"&gt;&lt;span style="color: black; font-family: Consolas; font-size: 10pt;"&gt;} &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;运行代码后生成的新文档如下图。&lt;span style="font-family: Segoe UI;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;图&lt;span style="font-family: Segoe UI;"&gt; 8. &lt;/span&gt;更新后的文档目录&lt;span style="font-family: Segoe UI;"&gt;&lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062510_0727_SharePoint212.jpg" /&gt;&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;总结 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;尽管Open XML SDK 2.0是非常强大的开发服务器端文档生成和处理系统的工具，但其在文档操作的其它方面功能有限，比如：进行文档格式转换，或者更新文档目录、字段等等。Word Automation Services弥补了其不足，并且提供了高可用性的解决方案。结合Open XML SDK 2.0使用Word Automation Services能够解决单独使用Open XML SDK 2.0时无法解决的很多难题。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;其它资源 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Developer Center: &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/office/bb265236.aspx"&gt;Open XML Formats Resource Center&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Blog: &lt;a target="_blank" href="http://blogs.msdn.com/EricWhite/"&gt;Eric White's Blog&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt;Blog: &lt;a target="_blank" href="http://blogs.msdn.com/b/microsoft_office_word/"&gt;Word 2010 Blog&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/bb448854.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Welcome to the Open XML SDK 2.0 for Microsoft Office&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ff433638.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Building Document Generation Systems from Templates with Word 2010 and Word 2007&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/zh-cn/library/ff433637.aspx"&gt;&lt;span style="font-family: Segoe UI; font-size: 10pt;"&gt;Building Publishing Systems that Use Word 2010 or Word 2007&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-family: Segoe UI; font-size: 10pt;"&gt; &lt;/span&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1765226.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/06/25/1765226.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/06/24/1764541.html</id><title type="text">SharePoint 2010: 对于开发人员</title><summary type="text">对开发人员的价值 SharePoint 2010为开发人员提供的好处是什么？ 开发人员可以使用 SharePoint 2010 开发平台为企业和 互联网构建商业协作应用，并且使用熟悉的工具和一套丰富的可互操作的预置功能。使用Visual Studio 2010 和新的 SharePoint Designer 2010 开发人员可以极大地提高工作效率。SharePoint 2010可以安装在 Mic...</summary><published>2010-06-24T08:41:00Z</published><updated>2010-06-24T08:41:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/06/24/1764541.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/06/24/1764541.html"/><content type="html">&lt;p&gt;&lt;strong&gt;对开发人员的价值 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint 2010为开发人员提供的好处是什么？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;开发人员可以使用 SharePoint 2010 开发平台为企业和 互联网构建商业协作应用，并且使用熟悉的工具和一套丰富的可互操作的预置功能。使用Visual Studio 2010 和新的 SharePoint Designer 2010 开发人员可以极大地提高工作效率。SharePoint 2010可以安装在 Microsoft Windows 7 或 Windows Vista 上进行开发。 使用 SharePoint 2010，软件开发人员可以获得丰富的资源，包括 SDK 文档和产品功能，如开发人员仪表板页面。 &lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010还包括一系列用于构建应用的可扩展框架功能和工具，包括： Microsoft Silverlight Web Parts和Client APIs, LINQ to SharePoint, Business Connectivity Services (BCS), Sandboxed Solutions, 以及全新的SharePoint List data relationships。使用BCS，开发人员可以非常容易地将LOB业务数据集成到SharePoint和Office客户端解决方案 ，并且提供读写功能。 &lt;/p&gt;&#xD;
&lt;p&gt;开发人员还可以构建沙盒解决方案，沙盒解决方案可以进行on-premise部署或者在线部署，其内置受限访问的API接口和资源管理。沙盒解决方案可以部署到corporate intranet或者共享托管环境中，如SharePoint Online。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开发 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;使用什么工具开发SharePoint应用或者自定义其外观？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可以使用Visual Studio 2010和SharePoint Designer 2010。SharePoint Designer免费下载使用。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开发人员可以构建什么样的 SharePoint作品？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;例如： &lt;/p&gt;&#xD;
&lt;ul style="margin-left: 54pt;"&gt;&#xD;
&lt;li&gt;web part, visual web part, sandboxed web part, workflow model, workflow action, event receiver, external content type, site definition, list definition, module, service application, image, timer job, custom css, custom master page, field control, custom action, custom ribbon, Silverlight application, web services, application pages, localized resources &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开发人员可以创建哪些能够被非开发人员开发的解决方案复用的组件？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;没有开发背景的人员通过SharePoint Designer或者SharePoint HTML UI构建复合解决方案。开发人员可以构建下面的这些组件，然后这些组件可以被一般用户在SharePoint复合解决方案中使用。 &lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Web Parts&lt;/strong&gt; &amp;ndash; 开发人员可以使用 Visual Studio 2010&lt;span style="font-family: 宋体;"&gt;构建Web Part，然后一般用户可以在&lt;/span&gt;SharePoint Designer&lt;span style="font-family: 宋体;"&gt;或&lt;/span&gt;HTML UI&lt;span style="font-family: 宋体;"&gt;中使用这些Web Part。W&lt;/span&gt;eb Parts包含开发人员编写的自定义代码，并且显示在SharePoint &lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;web part &lt;span style="font-family: 宋体;"&gt;库里。&lt;/span&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;Workflow Actions&lt;/strong&gt; &amp;ndash; &lt;span style="font-family: 宋体;"&gt;开发人员可以在&lt;/span&gt;Visual Studio 2010&lt;span style="font-family: 宋体;"&gt;中构建工作流A&lt;/span&gt;ctions (或 steps)&lt;span style="font-family: 宋体;"&gt; ，然后在&lt;/span&gt;SharePoint Designer&lt;span style="font-family: 宋体;"&gt;中使用，以设计工作流模型。工作流&lt;/span&gt;actions&lt;span style="font-family: 宋体;"&gt;包含开发人员编写的代码，显示在&lt;/span&gt;SharePoint Designer&lt;span style="font-family: 宋体;"&gt;的流程设计面板中。&lt;/span&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;strong&gt;External Content Types&lt;/strong&gt; &amp;ndash; &lt;span style="font-family: 宋体;"&gt;开发人员可以使用&lt;/span&gt;Visual Studio 2010&lt;span style="font-family: 宋体;"&gt;构建外部内容类型，其中包含访问某些外部系统数据的自定义代码。这些外部内容类型显示&lt;/span&gt;SharePoint&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;business data catalog&lt;span style="font-family: 宋体;"&gt;中，并且可以用来创建外部数据列表，SharePoint可以搜索这些外部数据列表，&lt;/span&gt; Office&lt;span style="font-family: 宋体;"&gt;客户端应用也可以访问这些外部数据列表。&lt;/span&gt; &lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;strong&gt;沙盒解决方案为什么对开发人员有益？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;自定义代码解决方案是开发业务解决方案时最有效的选择，但往往需要服务器管理员将代码部署到服务器。在一个托管着成千上万人员的大型服务器场中，部署自定义代码就变成一个非常敏感的事情，因为设计糟糕的代码会影响更多的人。 &lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010通过沙盒解决方案来解决这个问题。沙盒解决方案包含自定义代码，可以由服务器管理员或站点管理员进行部署。这就免去了企业的IT人员为一小部分用户专门评估、部署和维护自定义代码的麻烦。 &lt;/p&gt;&#xD;
&lt;p&gt;开发人员创建的沙盒解决方案受限访问SharePoint对象模型。比如：站点集所有者部署的沙盒解决方案无法和托管Web应用程序以及SharePoint服务器场进行交互，只可以和当前站点集里的站点进行交互。 &lt;/p&gt;&#xD;
&lt;p&gt;当站点集所有者部署自定义代码而无需IT人员的参与时， SharePoint服务器场和服务器管理员就需要控制一定的边界和自定义代码的工作范围。SharePoint 2010提供了对沙盒解决方案的监控和管理功能，能够确保SharePoint服务器场不会因为质量较差的代码而受影响。管理员可以设计CPU利用率、内存使用以及数据库查询时间的阈值，如果当沙盒解决方案超过这些阈值时，SharePoint 2010会自动将其停用。 &lt;/p&gt;&#xD;
&lt;p&gt;沙盒解决方案减轻了IT Pro的工作压力，因为它可以让站点集管理员部署自定义代码而无需管理员的介入。但站点管理员可以确保SharePoint服务器场不被质量差的自定义解决方案搞垮。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;是否支持第三方插件？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;支持。SharePoint可以运行很多第三方插件，包括additions, extensions, 以及第三方应用等。微软有一个庞大的合作伙伴社区，有规模较小的软件开发商，也有较大的独立软件开发商。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;是否支持为第三方模块、扩展、插件的在线交易站点？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可以通过CodePlex (&lt;a href="http://www.codeplex.com"&gt;www.codeplex.com&lt;/a&gt;)获取到很多第三方插件。当前，微软不提供此类支持或者销售第三方插件。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开发人员是否可以在Windows 7或Vista上进行SharePoint 2010开发？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010开发环境有了极大改进，除了非常丰富的开发工具集，开发SharePoint应用程序也不必须在运行Windows Server 2008服务器操作系统的机器上，现在我们可以直接在运行Windows 7或Windows Vista Service Pack 1的本地开发工作站上开发，开发好的解决方案可以从工作站部署到服务器上进行集成、测试，并发布为生产环境。 &lt;/p&gt;&#xD;
&lt;p&gt;需要注意的是， SharePoint 2010只有64位系统，所以不管是客户端还是服务器端都必须是64位操作系统。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint Designer 设计工作流有哪些改进的地方？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint Designer 2010的工作流设计体验有了很大变化，业务分析师可以将它作为工作流开发的第一个工具。SharePoint Designer 2010的工作流设计器能够将一系列的步骤、条件和动作整合在一起形成顺序工作流，还可以创建诸如循环和分支等的复杂工作流，也可以把默认的动作和自定义动作装配在一起，不需要编写任何代码就可以开发工作流。 &lt;/p&gt;&#xD;
&lt;p&gt;构建工作流的用户界面提供了组件模型页面，用户在设计工作流的同时还可以修改列表或者内容类型。 &lt;/p&gt;&#xD;
&lt;p&gt;工作流可以导出到Visio，然后再次导入到SharePoint Designer。开发人员可以使用Visual Studio 2010构建自定义流程步骤，然后在SharePoint Designer中使用。除此之外，开发人员也可以完全在Visual Studio中构建工作流。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint 2010使用哪个版本的.NET Framework？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010必须使用.NET Framework 3.5，当然，也可以在同一台机器上安装.NET 4.0，但SharePoint 2010只会使用.NET 3.5。 &lt;/p&gt;&#xD;
&lt;p&gt;这意味着SharePoint 2010使用的是Windows Workflow Foundation 3.5。我们可以在SharePoint 2010下面的这些地方使用.NET 4.0： &lt;/p&gt;&#xD;
&lt;ul style="margin-left: 54pt;"&gt;&#xD;
&lt;li&gt;Silverlight&lt;span style="font-family: 宋体;"&gt;或&lt;/span&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;的客户端对象模型代码&lt;/span&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;span style="font-family: 宋体;"&gt;发起&lt;/span&gt;SharePoint ASMX web services&lt;span style="font-family: 宋体;"&gt;调用的&lt;/span&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;代码&lt;/span&gt; &lt;/li&gt;&#xD;
&lt;li&gt;SharePoint 2010 BCS调用的Web Service中的代码 &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;SharePoint 2010之所以使用.NET 3.5，是因为有2个项目未能及时完成。SharePoint团队会专注于.NET Framework，但现在还没有发布任何关于未来支持.Net 4.0的时间计划。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;互操作性 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint的互访问性如何？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;互访问性是确保企业内部的系统能够彼此进行集成并且共享内容和数据的关键。SharePoint 2010提供了丰富的、容易扩展的标准集合，使用这些标准， SharePoint可以非常方便地与其它系统进行互操作。 &lt;/p&gt;&#xD;
&lt;p&gt;包括： &lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;REST (Representational State Transfer) &lt;/li&gt;&#xD;
&lt;li&gt;Web Services &lt;/li&gt;&#xD;
&lt;li&gt;WSRP 1.1 (Web Services for Remote Portlets) &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint 2010是否支持REST？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010提供了使用标准的REST接口查询列表数据的功能，SharePoint REST通过OData服务提供（原项目名称 "Astoria"）。REST提供了与Web紧密集成的 灵活的数据服务，只需要将URI指向数据的某些部分，即可以用简单容易的方式来操作这些数据，如JSON和XML。 以REST方式发布到Web的资源能够让代理通过URI地址，以常用的GET, POST或DELETE方法和数据进行交互。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint 2010是否支持Web Services？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010提供了丰富的XML Web Services集，用于与SharePoint查询、交互和管理。下面列举的只是SharePoint Web Service的一部分。 &lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Administration &lt;/li&gt;&#xD;
&lt;li&gt;Alerts &lt;/li&gt;&#xD;
&lt;li&gt;Authentication &lt;/li&gt;&#xD;
&lt;li&gt;Data retrieval &lt;/li&gt;&#xD;
&lt;li&gt;Permissions &lt;/li&gt;&#xD;
&lt;li&gt;Sites &lt;/li&gt;&#xD;
&lt;li&gt;Search &lt;/li&gt;&#xD;
&lt;li&gt;People &amp;amp; Profiles &lt;/li&gt;&#xD;
&lt;li&gt;Workflow &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint 2010是否支持WSRP？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010默认提供一个WSRP v1.1 consumer web part，能够将WSRP provided content展示到SharePoint Web界面。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;支持的标准 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;SharePoint 2010支持什么样的标准？ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SharePoint 2010支持非常广泛的标准，如： &lt;/p&gt;&#xD;
&lt;p&gt;.NET Web Part Framework, DOM 1.0 , DOD 5015, FrontPage RPC, HTML, HTTP, HTTPS, MathML, ODBC , ODF (IS26300) , Open XML (IS29500) , OpenSearch, OpenType , PDF 1.7 ,PDF/A ,RTF,RSS, ATOM, SMTP, SOAP, SVG, REST, UDDI, Unicode, URI/URN, W3C XML Schema, WCAG 2.0, WebDAV, WSDL, WSRP 1.0, XHTML, XML, XML Web Services, XML Dsig, XPATH, XPS, XSLT。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1764541.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/06/24/1764541.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/06/23/1763849.html</id><title type="text">SharePoint 2010: 使用SharePoint的Theming引擎</title><summary type="text">SharePoint 2010提供了一个全新的Theming引擎，可以很方便地进行界面风格的定制。Theming引擎能做什么？SharePoint 2010 Theming引擎的工作对象是CSS文件，可以提供如下功能：替换颜色，如背景色和文本色替换字体为图片设定颜色（使用3种方法：淡化，调和以及填充）使用浏览器，我们可以选择SharePoint开箱即用的站点风格（Theme），或者通过选择12种颜...</summary><published>2010-06-23T09:51:00Z</published><updated>2010-06-23T09:51:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/06/23/1763849.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/06/23/1763849.html"/><content type="html">&lt;p&gt;SharePoint 2010提供了一个全新的Theming引擎，可以很方便地进行界面风格的定制。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Theming引擎能做什么？&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SharePoint 2010 Theming引擎的工作对象是CSS文件，可以提供如下功能：&#xD;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;替换颜色，如背景色和文本色&#xD;
&lt;/li&gt;&lt;li&gt;替换字体&#xD;
&lt;/li&gt;&lt;li&gt;为图片设定颜色（使用3种方法：淡化，调和以及填充）&#xD;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;使用浏览器，我们可以选择SharePoint开箱即用的站点风格（Theme），或者通过选择12种颜色和2种字体创建新的站点风格。这些颜色和字体的值都保存在一个THMX文件中。因为Office应用也使用THMX文件，所以我们可以使用PowerPoint创建一个风格，然后将风格保存为THMX文件，最后在SharePoint中使用这个THMX文件。THMX文件保存在站点的Theme库里，我们可以用SharePoint Designer添加风格，也可以通过浏览"站点设置"-〉"Theme库"的方式添加风格。12种风格颜色以下面的标识符进行标识：&#xD;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Dark1，Dark2&#xD;
&lt;/li&gt;&lt;li&gt;Light1，Light2&#xD;
&lt;/li&gt;&lt;li&gt;Accent1，Accent2，Accent3，Accent4，Accent5，Accent6&#xD;
&lt;/li&gt;&lt;li&gt;Hyperlink&#xD;
&lt;/li&gt;&lt;li&gt;FollowedHyperlink&#xD;
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Theming引擎能够使用这些颜色，并且为每种颜色另外产出5种变体：Lightest，Lighter，Medium，Darker以及Darkest。我们可以&lt;em&gt;Color-Permutation&lt;/em&gt;的格式，如&lt;em&gt;Light2-Darkest&lt;/em&gt;，的方式使用这些变体。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;语法&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Theming引擎通过读取CSS文件中的备注信息进行工作。要风格化一个格式，我们首先定义一个默认选项，然后把风格标识直接放在格式之前即可。比如，要把一个&lt;em&gt;background-color&lt;/em&gt;元素风格化为&lt;em&gt;Light2-Darkest&lt;/em&gt;，我们的CSS文件定义应该类似：&#xD;
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;/* [ReplaceColor(themeColor:"Light2-Darkest")] */&lt;span style="color:gray"&gt;&#xD;
			&lt;span style="color:red"&gt;background-color&lt;span style="color:gray"&gt;:&lt;span style="color:#548dd4"&gt;#707070&lt;span style="color:gray"&gt;;&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;使用默认风格时，背景色是#707070，当使用新的风格时，背景色将变为Light2-Darkest。关于如何使用其它的颜色标识，请参考本文档结尾部分，或者SharePoint默认CSS文件corev4.css。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;安装文件&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们需要执行下面的步骤才能够对Master Page启用Theme功能：&#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;把CSS文件放到Theme引擎可以看到的地方&#xD;
&lt;/li&gt;&lt;li&gt;在Master Page中注册CSS文件&#xD;
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;文件位置&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;只有CSS文件放在正确的路径下，Theme引擎才可以使用它。我们可以使用&lt;span style="text-decoration:underline"&gt;RootSite/Style Library/~language/Themable&lt;/span&gt;文件夹。该文件夹只有当激活SharePoint Server Publishing功能时才会存在。如果我们所工作的根站点下没有这个文件夹，我们只需手工创建这个文件夹即可。Themable文件夹下面的所有内容都会被Theming引擎看到，包括子文件夹里面的内容。可以使用SharePoint Designer或者在浏览器中再次创建这个文件夹。Language文件夹是可选的，只有当你希望不同的语言对应不同的CSS文件时才需要。对于英语，文件夹的名称是en-us，对于简体中文，文件夹名称是zh-cn。&#xD;
&lt;/p&gt;&lt;p&gt;图片文件无需放在特定的文件夹下，不过我们建议放在&lt;span style="text-decoration:underline"&gt;RootSite/Style Library/Images&lt;/span&gt;里。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;注册文件&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我们需要把风格化的CSS文件注册到Master Page，而不仅仅是把CSS文件链起来，这样，当应用新的Theme时Master Page才可以找到正确的CSS文件。我们只需要把下面的内容加到Master Page的Header部分即可。&#xD;
&lt;/p&gt;&lt;p style="background: white; margin-left: 36pt"&gt;&lt;span style="color:blue; font-family:Segoe UI; font-size:9pt"&gt;&amp;lt;&lt;span style="color:#9b00d3"&gt;SharePoint:CssRegistration&lt;span style="color:#333333"&gt;&#xD;
					&lt;span style="color:red"&gt;name&lt;span style="color:blue"&gt;="&lt;span style="color:#c0504d"&gt;&amp;lt;% $SPUrl:~sitecollection/Style Library/~language/ Themable /myStyleSheet.css %&amp;gt;&lt;span style="color:blue"&gt;"&lt;span style="color:#333333"&gt;&#xD;
										&lt;span style="color:red"&gt;After&lt;span style="color:blue"&gt;="corev4.css"&lt;span style="color:#333333"&gt;&#xD;
													&lt;span style="color:red"&gt;runat&lt;span style="color:blue"&gt;="server"/&amp;gt;&lt;span style="color:#333333"&gt;&#xD;
															&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;After参数确保我们自定义的CSS文件在应用corev4.css之后才会被应用。需要注意的是：&lt;em&gt;&amp;lt;%$SPUrl&amp;gt;&lt;/em&gt;是无法被SharePoint Foundation识别的，所以在SPF中，我们需要使用硬编码的URL地址。这样做的遗憾是无法为不同的语言设置不同的CSS文件，因为我们无法使用~Language参数。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;演示&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;现在我们来做个示例。为了更好的理解颜色面板，我把下面的颜色变体表加入到了v4.master，同时导入一个示例图片，并对其设置颜色。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062310_0950_SharePoint21.jpg" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;接下来，打开浏览器选择一个新的站点风格，Papyrus和Segoe Script字体，然后应用自定义的CSS文件，就看到下面的效果。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062310_0950_SharePoint22.jpg" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;strong&gt;示例代码&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;上图中第二个Logo的CSS代码如下：&#xD;
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Segoe UI; font-size:9pt"&gt;/* [ReplaceFont(themeFont: "MinorFont")] */ &lt;span style="color:red"&gt;font-family&lt;span style="color:blue"&gt;:Verdana&lt;span style="color:#333333"&gt;;&lt;br/&gt;&lt;/span&gt;/* [ReplaceColor(themeColor:"Dark2-Darker")] */ &lt;span style="color:red"&gt;color&lt;span style="color:blue"&gt;:black&lt;span style="color:#333333"&gt;;&lt;br/&gt;&lt;/span&gt;/* [&lt;/span&gt;RecolorImage(themeColor:"Dark2-Lightest",method:"Tinting")] */ background&lt;span style="color:blue"&gt;:url("/Style Library/images/spdicon1.png") no-repeat&lt;span style="color:#333333"&gt;;&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;呵呵，挺酷吧！如果使用的得当，SharePoint Theming引擎可以大大地帮助我们进行界面外观的定制。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1763849.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/06/23/1763849.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/06/22/1762572.html</id><title type="text">SharePoint 2010: Claims-based Authentication</title><summary type="text">基于声明的身份授权模型SharePoint Server 2010引入了一个全新的、强大的，并且非常灵活的授权模型，可以和企业的任何身份体系相集成，包括：AD，基于LDAP的目录服务，特定应用程序的身份体系，以及新的以用户为中心的身份模型，如LiveID。该模型使用基于声明的授权模式和新产品——Geneva。基于声明的授权模型围绕身份理念构建，并且使用WS-Federation, WS-Trust...</summary><published>2010-06-22T04:42:00Z</published><updated>2010-06-22T04:42:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/06/22/1762572.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/06/22/1762572.html"/><content type="html">&lt;p&gt;&lt;strong&gt;基于声明的身份授权模型&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SharePoint Server 2010引入了一个全新的、强大的，并且非常灵活的授权模型，可以和企业的任何身份体系相集成，包括：AD，基于LDAP的目录服务，特定应用程序的身份体系，以及新的以用户为中心的身份模型，如LiveID。该模型使用基于声明的授权模式和新产品——Geneva。基于声明的授权模型围绕身份理念构建，并且使用WS-Federation, WS-Trust，以及诸如Security Assertion Markup Language (SAML)等协议构建。&#xD;
&lt;/p&gt;&lt;p&gt;身份是用户信息的集合，包括：名称、邮箱地址、部门等等。事实上，Geneva等同于3套相关的技术：Active Directory Federation Services (以前称为Geneva Server），Windows Cardspace™ (以前称为Cardspace Geneva), 以及Windows Identity Foundation (以前称为Geneva Framework)。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/dwang/062210_0442_SharePoint21.png" alt=""/&gt;&lt;p&gt;&lt;strong&gt;&#xD;
		&lt;/strong&gt;&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;为什么使用这个新的系统？&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;身份是驱动应用各个关键部分的核心，比如：用户是谁（authentication)，用户拥有什么样的权限(authorization)，以及应用如何与用户进行交互(personalization)等等。当今所有的应用都有身份体系，但都运行在各自的身份体系下。通常，要集成这些应用非常非常困难。&#xD;
&lt;/p&gt;&lt;p&gt;基于声明的身份授权体系为应用提供了一种从组织内、其他组织以及Internet，获取用户身份信息的常规方法。&#xD;
&lt;/p&gt;&lt;p&gt;身份信息包含在security token内（简单来讲，就是Token）。Token包含一个或者多个用户声明。我们可以把基于声明的授权体系理解为用户元数据，而这些数据贯穿于用户访问Session的整个过程。&#xD;
&lt;/p&gt;&lt;p&gt;基于声明的授权体系为SharePoint 2010提供了无限的可能性。我们可以在一个Web应用中灵活地使用多个用户授权体系，然后根据他们的Token提供的身份信息提供更加个性化的访问体验。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1762572.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/06/22/1762572.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dwang/archive/2010/06/21/1762194.html</id><title type="text">SharePoint 2010: 学习资源</title><summary type="text">SharePoint 2010 RTM已经正式发布，大家可以去下载试用版，并领略SharePoint 2010给我们带来的新体验和新价值！			SharePoint 2010 官方网站：http://sharepoint.microsoft.com/en-us/Pages/default.aspx SharePoint 2010 TechNet技术文档：http://technet.microso...</summary><published>2010-06-21T11:51:00Z</published><updated>2010-06-21T11:51:00Z</updated><author><name>老猴</name><uri>http://www.cnblogs.com/dwang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dwang/archive/2010/06/21/1762194.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dwang/archive/2010/06/21/1762194.html"/><content type="html">&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;span style="font-family:Times New Roman"&gt;SharePoint 2010 RTM&lt;/span&gt;&lt;span style="font-family:宋体"&gt;已经正式发布，大家可以去下载&lt;a href="http://msdn.microsoft.com/evalcenter/ee388573.aspx"&gt;试用版&lt;/a&gt;，并领略&lt;/span&gt;&lt;span style="font-family:Times New Roman"&gt;SharePoint 2010&lt;/span&gt;&lt;span style="font-family:宋体"&gt;给我们带来的新体验和新价值！&lt;/span&gt;&lt;span style="font-family:Times New Roman"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SharePoint 2010 &lt;span style="font-family:宋体"&gt;官方网站：&lt;a href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx"/&gt;&lt;/span&gt;http://sharepoint.microsoft.com/en-us/Pages/default.aspx &#xD;
&lt;/li&gt;&lt;li&gt;SharePoint 2010 TechNet&lt;span style="font-family:宋体"&gt;技术文档：&lt;a href="http://technet.microsoft.com/zh-cn/library/cc303422.aspx"/&gt;&lt;/span&gt;http://technet.microsoft.com/zh-cn/library/cc303422.aspx &#xD;
&lt;/li&gt;&lt;li&gt;SharePoint 2010&lt;span style="font-family:宋体"&gt;开发入门：&lt;a href="http://msdn.microsoft.com/zh-cn/sharepoint/ee513147.aspx"/&gt;&lt;/span&gt;http://msdn.microsoft.com/zh-cn/sharepoint/ee513147.aspx &#xD;
&lt;/li&gt;&lt;li&gt;SharePoint 2010 &lt;span style="font-family:宋体"&gt;开发人员资源中心：&lt;a href="http://msdn.microsoft.com/zh-cn/sharepoint/bb964529.aspx"/&gt;&lt;/span&gt;http://msdn.microsoft.com/zh-cn/sharepoint/bb964529.aspx &#xD;
&lt;/li&gt;&lt;li&gt;SharePoint 2010 &lt;span style="font-family:宋体"&gt;高级开发培训：&lt;a href="http://msdn.microsoft.com/zh-cn/sharepoint/ff420377(en-us).aspx"/&gt;&lt;/span&gt;http://msdn.microsoft.com/zh-cn/sharepoint/ff420377(en-us).aspx &#xD;
&lt;/li&gt;&lt;li&gt;SharePoint 2010 MSDN&lt;span style="font-family:宋体"&gt;资源：&lt;a href="http://msdn.microsoft.com/zh-cn/sharepoint/default.aspx"/&gt;&lt;/span&gt;http://msdn.microsoft.com/zh-cn/sharepoint/default.aspx &#xD;
&lt;/li&gt;&lt;li&gt;SharePoint 2010 Class Libraries and Web Service References: &lt;a href="http://msdn.microsoft.com/zh-cn/library/ff462061.aspx"&gt;http://msdn.microsoft.com/zh-cn/library/ff462061.aspx&lt;/a&gt;&#xD;
		&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Times New Roman; font-size:12pt"&gt; &lt;/span&gt; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/dwang/aggbug/1762194.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dwang/archive/2010/06/21/1762194.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
