<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jimmie's Sharings : SharePoint</title><link>http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx</link><description>Tags: SharePoint</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Content Deployment and CEWP Absolute URLs</title><link>http://blogs.msdn.com/jimmiet/archive/2009/02/16/content-deployment-and-cewp-absolute-urls.aspx</link><pubDate>Tue, 17 Feb 2009 01:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9426573</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/9426573.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=9426573</wfw:commentRss><description>&lt;H3&gt;Content Deployment and CEWP Absolute URLs&lt;/H3&gt;
&lt;P&gt;The Content Editor Web Part (CEWP) has a Rich Text Editor. This allows non-technical authors to generate custom content using a web part. This is a great feature for team collaboration sites, but some customers also use the CEWP on publishing site pages. Avoiding the discussion of web parts verses field controls in published pages, there are issues using the CEWP to create content on published pages.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 599px; HEIGHT: 232px" title=cdwp1 alt=cdwp1 src="http://blogs.msdn.com/photos/jimmiet/images/9426590/original.aspx" width=599 height=232 mce_src="http://blogs.msdn.com/photos/jimmiet/images/9426590/original.aspx"&gt;&lt;A href="http://blogs.msdn.com/ControlPanel/Blogs/$cewp1[4].jpg" mce_href="$cewp1[4].jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;The Problem&lt;/H4&gt;
&lt;P&gt;A Rich Text Editor sounds like a great feature; however, there is a problem with content deployment, described by &lt;A href="http://andrewconnell.com/blog/archive/2008/12/24/Working-around-the-CEWPs-absolute-links.aspx" mce_href="http://andrewconnell.com/blog/archive/2008/12/24/Working-around-the-CEWPs-absolute-links.aspx"&gt;Andrew Connell&lt;/A&gt;. (There is a related problem for sites that can be accessed through multiple AAMs as described by &lt;A href="http://blogs.msdn.com/maximeb/archive/2008/12/23/fixing-absolute-urls-for-all-alternate-access-mappings-aam-of-content-editor-web-part-with-a-control-adapter.aspx" mce_href="http://blogs.msdn.com/maximeb/archive/2008/12/23/fixing-absolute-urls-for-all-alternate-access-mappings-aam-of-content-editor-web-part-with-a-control-adapter.aspx"&gt;Maxime Bombardier&lt;/A&gt;.) The basic problem is the Rich Text Editor forces all URLs to be absolute. If you look at the HTML generated by the above HTML editor, you will see:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/ControlPanel/Blogs/$cewp2[3].jpg" mce_href="$cewp2[3].jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;IMG style="WIDTH: 499px; HEIGHT: 87px" title=cewp2 alt=cewp2 src="http://blogs.msdn.com/photos/jimmiet/images/9426601/original.aspx" width=499 height=87 mce_src="http://blogs.msdn.com/photos/jimmiet/images/9426601/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;As Andrew Connell points out: &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 12pt 0.5in; BACKGROUND: #d9d9d9; mso-background-themecolor: background1; mso-background-themeshade: 217" class=MsoNormal&gt;If you have a link to &lt;A href="http://staging.adventureworkstravel.com/pages/contactus.aspx" mce_href="http://staging.adventureworkstravel.com/pages/contactus.aspx"&gt;http://staging.adventureworkstravel.com/pages/contactus.aspx&lt;/A&gt; in a CEWP on a page and then do content deployment to &lt;A href="http://www.adventureworkstravel.com/" mce_href="http://www.adventureworkstravel.com"&gt;http://www.adventureworkstravel.com&lt;/A&gt;, the link will be pointing back to the staging site (which will... or should... be inaccessible).&lt;/P&gt;
&lt;P&gt;The absolute URL is not fixed up automatically during content deployment, so the target page will still point to the original URL location, not a location within the target farm. This means the absolute URL must be corrected in the target farm itself. In the preceding example, we want the target farm HTML to be a relative URL that points to locations within the target farm:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/ControlPanel/Blogs/$cewp3[3].jpg" mce_href="$cewp3[3].jpg"&gt;&lt;/A&gt;&lt;IMG style="WIDTH: 503px; HEIGHT: 88px" title=cewp3 alt=cewp3 src="http://blogs.msdn.com/photos/jimmiet/images/9426604/original.aspx" width=503 height=88 mce_src="http://blogs.msdn.com/photos/jimmiet/images/9426604/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Maxime Bombardier’s control adapter strategy can be leveraged. With slight modification, Maxime’s code can be modified to convert absolute URLs to relative URLs, so they effectively point to the appropriate location in the target farm. How do we convert an absolute URL to a relative URL? Looking at the above example, we need to strip out the host portion of the URL; that is, we need to remove “http://moss.litwareinc.com”&lt;/P&gt;
&lt;H4&gt;The Solution&lt;/H4&gt;
&lt;P&gt;The difference between the content deployment fix we need, and Maxime’s AAM fix, is what gets stripped. Maxime’s AAM fix strips the AAM host names of the &lt;U&gt;current&lt;/U&gt; web application. The content deployment fix needs to strip the AAM host names of the &lt;U&gt;authoring&lt;/U&gt; web application, which the target farm does not know. In other words, we need a way to tell the control adapter which host names to strip. The solution is to make the host names configurable. This solution uses the &lt;A href="http://www.codeplex.com/SPConfigStore" mce_href="http://www.codeplex.com/SPConfigStore"&gt;SharePoint Config Store&lt;/A&gt; solution developed by Chris O'Brien. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/ControlPanel/Blogs/$cewp4[3].jpg" mce_href="$cewp4[3].jpg"&gt;&lt;/A&gt;&lt;IMG style="WIDTH: 472px; HEIGHT: 90px" title=cewp4 alt=cewp4 src="http://blogs.msdn.com/photos/jimmiet/images/9426611/original.aspx" width=472 height=90 mce_src="http://blogs.msdn.com/photos/jimmiet/images/9426611/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, the primary difference between this control adapter and Maxime’s control adapter is the &lt;B&gt;GetAlternativeUrls&lt;/B&gt; method. This method’s logic is changed to read AAMs from the Config store list, rather than using the object module to get the AAMs from the current web application.&lt;/P&gt;
&lt;H4&gt;The Code&lt;/H4&gt;
&lt;P&gt;&lt;A title=_Toc221014204 name=_Toc221014204&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; COB.SharePoint.Utilities; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.Collections.Generic; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.IO; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.Text; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.Web; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.Web.UI; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; System.Web.UI.Adapters; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Microsoft.SharePoint; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Microsoft.SharePoint.Administration; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt; Litware.SharePoint.WebPartPages.CewpControlAdapter &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ContentEditorWebPartAdapter&lt;/SPAN&gt; : ControlAdapter&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;override&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Render(System.Web.UI.HtmlTextWriter writer)&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{ &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;StringBuilder&lt;/SPAN&gt; sb = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;StringBuilder&lt;/SPAN&gt;();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Allow the CEWP to render itself into a string that we provide&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HtmlTextWriter htw = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; HtmlTextWriter(&lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;StringWriter&lt;/SPAN&gt;(sb)); &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;base&lt;/SPAN&gt;.Render(htw);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; output = sb.ToString();&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Wrap the adatper rendering logic in a try-catch so any error&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// in the adapter won't prevent the CEWP from rendering.&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Now we post-process the CEWP rendering to convert absolute URLs to relative URLs&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] alternativeUrls = GetAlternativeUrls();&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (alternativeUrls != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; replaceableUrl &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; alternativeUrls)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Do a simple String.Replace() of the alternativeUrls to generate a relative url&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;searchFor = replaceableUrl;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;replaceWith = &lt;SPAN style="COLOR: #a31515"&gt;"/"&lt;/SPAN&gt;;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;output = output.Replace(searchFor, replaceWith);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// log exception here&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Finally, write the rendering to the page&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;writer.Write(output);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] GetAlternativeUrls() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] alternativeUrls = &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;;&amp;nbsp; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;alernativeUrls = (&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[])HttpContext.Current.Cache[&lt;SPAN style="COLOR: #a31515"&gt;"alternativeUrls"&lt;/SPAN&gt;];&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (alternativeUrls == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; temp = &lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;.Empty;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Get the URLs to be replaced from the config store&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;temp = ConfigStore.GetValue(&lt;SPAN style="COLOR: #a31515"&gt;"CEWP Adapter"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"AAMs"&lt;/SPAN&gt;);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;String&lt;/SPAN&gt;.IsNullOrEmpty(temp))&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ArgumentNullException&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"AAMs config store parameter is null or empty"&lt;/SPAN&gt;);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Split apart the config parameter using a semicolon separater value&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt;[] separaters = { &lt;SPAN style="COLOR: #a31515"&gt;';'&lt;/SPAN&gt; };&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;alternativeUrls = temp.Split(separaters);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Validate the config value&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (alternativeUrls == &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt; || alternativeUrls.Length == 0)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ArgumentNullException&lt;/SPAN&gt;( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #a31515"&gt;"AAMs config store parameter is null or empty after split"&lt;/SPAN&gt;);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt; (&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; i = 0; i &amp;lt; alternativeUrls.Length; i++)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Ensure the URL is "/" terminated for consitent replacement behavior&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; replaceableUrl = alternativeUrls[i];&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt; (!&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;.IsNullOrEmpty(replaceableUrl) &amp;amp;&amp;amp; !replaceableUrl.EndsWith(&lt;SPAN style="COLOR: #a31515"&gt;"/"&lt;/SPAN&gt;))&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;alternativeUrls[i] += &lt;SPAN style="COLOR: #a31515"&gt;"/"&lt;/SPAN&gt;;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Sort, and then reverse the array&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// to put the longest; that is, the most specific&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// URLs first in the list&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Array&lt;/SPAN&gt;.Sort(alternativeUrls);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Array&lt;/SPAN&gt;.Reverse(alternativeUrls);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Cache for 5 minutes to allow for a somewhat quick refresh &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: green"&gt;// &lt;/SPAN&gt;if the configuration values are changed&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HttpContext.Current.Cache.Add(&lt;SPAN style="COLOR: #a31515"&gt;"alternativeUrls"&lt;/SPAN&gt;,alternativeUrls, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;BR&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateTime&lt;/SPAN&gt;.Now.AddMinutes(5), System.Web.Caching.Cache.NoSlidingExpiration, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Caching.CacheItemPriority.Normal, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;catch&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;Exception&lt;/SPAN&gt; ex)&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// log exception here&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&amp;nbsp; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; alternativeUrls; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;} &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-no-proof: yes"&gt;}&amp;nbsp;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Build the output assembly as strongly named, and then deploy it to the GAC on every WFE. A simple solution package (wsp file) can be created to automate the deployment to all WFEs. Creating a solution package is automatic if you create your project using the &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=7BF65B28-06E2-4E87-9BAD-086E32185E68&amp;amp;displaylang=en"&gt;Visual Studio 2008 extensions for Windows SharePoint Services 3.0, v1.2&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;Browser File&lt;/H4&gt;
&lt;P&gt;The control adapter is associated with the CEWP through browser file entries. The default browser file, &lt;B&gt;compat.browser&lt;/B&gt;, is in the &lt;B&gt;App_Browsers&lt;/B&gt; folder of each web application’s virtual directory. We don’t want to update this file; instead, we will create a separate file for our control adapter.&lt;/P&gt;
&lt;P&gt;Additional browser files can be added to the same directory; however, &lt;FONT color=#800000&gt;additional files will not be recognized by ASP.NET until compat.browser is recompiled. Recompilation is forced by opening compat.browser in a text editor like Notepad, making an innocuous change (e.g., add and then delete a space), and then saving the file&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;The customized browser file, &lt;B&gt;litware.browser&lt;/B&gt;, is created and placed in the &lt;B&gt;App_Browsers&lt;/B&gt; folder of every web application where the control adapter is to be enabled. Without this browser file, the control adapter is not called even though it may be installed in the GAC. The default compat.browser is then updated and saved to force a recompiled of the local application browser files as described in the preceding paragraph.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/ControlPanel/Blogs/$cewp5[3].jpg" mce_href="$cewp5[3].jpg"&gt;&lt;/A&gt;&lt;IMG style="WIDTH: 399px; HEIGHT: 190px" title=cewp5 alt=cewp5 src="http://blogs.msdn.com/photos/jimmiet/images/9426616/original.aspx" width=399 height=190 mce_src="http://blogs.msdn.com/photos/jimmiet/images/9426616/original.aspx"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Looking at the &lt;B&gt;litware.browser &lt;/B&gt;code, the entry &lt;B&gt;controlType&lt;/B&gt; attribute tells ASP.NET to associate this control adaptor with the CEWP. The &lt;B&gt;adapterType&lt;/B&gt; attribute has the control adapter type and assembly. The refID=”Default” attribute tells ASP.NET to apply the adapter to all browser types. &lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; BACKGROUND: #f2f2f2; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xml&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;version&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;="1.0" &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;encoding&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;="utf-8" ?&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;browsers&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;browser&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;refID&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Default&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;controlAdapters&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;adapter&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;controlType&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Microsoft.SharePoint.WebPartPages.ContentEditorWebPart&lt;/SPAN&gt;" &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: red; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;adapterType&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Litware.SharePoint.WebPartPages.CewpControlAdapter.ContentEditorWebPartAdapter, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Litware.SharePoint.WebPartPages.CewpControlAdapter, Version=1.0.0.0, Culture=neutral, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PublicKeyToken=daf6fd1bbe0cfc20&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;controlAdapters&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;browser&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt; &lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: #a31515; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;browsers&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; COLOR: blue; FONT-SIZE: 9pt; mso-fareast-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-SIZE: 9pt"&gt; &lt;/SPAN&gt;
&lt;P&gt;Note, App_Browser directory must be updated on every WFE in the target farm.&lt;/P&gt;
&lt;H4&gt;References&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms228122(VS.80).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms228122(VS.80).aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;Browser Definition File Schema (browsers Element)&lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt; &lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms228049(VS.80).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms228049(VS.80).aspx"&gt;&lt;U&gt;&lt;FONT color=#0000ff&gt;Securing Browser Definition Files &lt;/FONT&gt;&lt;/U&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9426573" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/Content+Deployment/default.aspx">Content Deployment</category></item><item><title>Office Web Service</title><link>http://blogs.msdn.com/jimmiet/archive/2008/07/03/office-web-service.aspx</link><pubDate>Fri, 04 Jul 2008 01:46:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8685947</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8685947.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8685947</wfw:commentRss><description>&lt;h1&gt;Office Web Service
&lt;/h1&gt;&lt;p&gt;The Office Services Web service is used by Office SharePoint Server 2007 as a communication channel between Web servers and application servers. This service uses the following ports:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;TCP         56737
&lt;/li&gt;&lt;li&gt;TCP/SSL     56738
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Access to the web service methods is restricted to the farm administrator group, WSS_ADMIN_WPG.  None of the web service methods can be called from user code.
&lt;/p&gt;&lt;h2&gt;Web Services
&lt;/h2&gt;&lt;p&gt;Depending on features installed, the Office Server Web Services Web application exposes the following internal Web services, which are not available for calls from custom code:
&lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse:collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="width:120px"/&gt;&lt;col style="width:266px"/&gt;&lt;col style="width:249px"/&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;strong&gt;Friendly Name&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;strong&gt;Search Web Service&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;SearchAdmin.asmx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;Microsoft Office SharePoint Server 2007 Search Administration Web Service.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;strong&gt;Search Application Web Service&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;/SSP/Search/SearchAdmin.asmx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;Microsoft Office SharePoint Server 2007 Search Application Administration Web Service.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2" style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;strong&gt;Excel Service Soap&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;/SSP/ExcelCalculationServer/ExcelService.asmx&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  none; border-left:  none; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;Microsoft Office SharePoint Server 2007 Excel Services Application Web Service.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;p&gt;The object model automatically short circuits the web services, i.e. invokes the underlying functionality without invoking the web service, when the target server is also the client primarily for performance reasons. Hence, the web services are not used...
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;On a Basic deployment.
&lt;/li&gt;&lt;li&gt;When the administrative action is performed on a WFE that also happens to be the indexer.
&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Global Web Service (SearchWebService)
&lt;/h3&gt;&lt;p&gt; Runs in the Office Server Web Services virtual server root application pool, i.e. an application pool that does not belong to any SSP. This GLOBAL application pool runs as NetworkService.
&lt;/p&gt;&lt;p&gt; It is used to retrieve low level computer configuration settings before any SSP is created, e.g. system drive info, verify path correctness, the computer's IP Address.
&lt;/p&gt;&lt;p&gt; It is also used to create/configure a propagation share. The web method that implements this functionality is special: It impersonates the WindowsIdentity making the request. That identity must be a local admin on the remote server (only local administrators can create/configure shares).
&lt;/p&gt;&lt;p&gt;Allowed access: WSS_ADMIN_WPG.
&lt;/p&gt;&lt;h3&gt; SSP (Application) Web Service (SearchApplicationWebService)
&lt;/h3&gt;&lt;p&gt; Primarily used for SSP administration of Search configuration.
&lt;/p&gt;&lt;p&gt; A web service associated with a specific SSP on a specific server (indexer and/or query server).
&lt;/p&gt;&lt;p&gt;Runs as the SSP web service credentials (the credentials that you enter in the SSP creation/details page).
&lt;/p&gt;&lt;p&gt; The SSP web service account can read/write from/to the SSP database and the Search database (only the ones that belong to its SSP).
&lt;/p&gt;&lt;p&gt;Allowed access: WSS_ADMIN_WPG and the SSP administration application pool identity.
&lt;/p&gt;&lt;h2&gt;Security 
&lt;/h2&gt;&lt;h3&gt;InterServer Communications
&lt;/h3&gt;&lt;p&gt;Network traffic can be secured with either SSL on port 56738, or with IPSec on either port.
&lt;/p&gt;&lt;p&gt;IPSec is an IP level feature, which means all traffic on the configured ports is protected; whereas, SSL is an application level protection mechanism. 
&lt;/p&gt;&lt;p&gt;IPSec has the advantage of limiting which pairs of servers can communicate, by configuring the IP addresses. This feature can significantly lock down a server farm.
&lt;/p&gt;&lt;h3&gt;Service Accounts Used
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Search service account
&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It is a db_owner in ALL SSP databases.
&lt;/li&gt;&lt;li&gt;It is a db_owner in ALL Search databases.
&lt;/li&gt;&lt;li&gt;It has READ ONLY access to all the content in ALL web applications via a policy.
&lt;/li&gt;&lt;li&gt;It has read/write access to the propagation share on Query servers.
&lt;/li&gt;&lt;li&gt;It has read/write access to the Search registry hive.
&lt;/li&gt;&lt;li&gt;It has read/write access to the Search index location.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;SSP administration site application pool identity
&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;This account is determined by the web application that you select when you create the SSP. 
&lt;/li&gt;&lt;li&gt;It has read/write access to the SSP database and the Search database.
&lt;/li&gt;&lt;li&gt;This account has full control over the Search service via its COM interfaces.
&lt;/li&gt;&lt;li&gt;It has read/write access to the Search registry hive.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Global web service account 
&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;This is the GLOBAL application pool account of the Office Server Web Services, i.e. an application pool that does not belong to any SSP.
&lt;/li&gt;&lt;li&gt;It is always set to NetworkService.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;SSP (Application) web service
&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The application pool account of an SSP web service (the credentials entered in the SSP creation/details page).
&lt;/li&gt;&lt;li&gt;This account has read/write access to the SSP database and to the Search database of an SSP.
&lt;/li&gt;&lt;li&gt;This account has full control over the Search service via its COM interfaces.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It has read/write access to the Search registry hive.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8685947" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>My Site Recommendations</title><link>http://blogs.msdn.com/jimmiet/archive/2008/07/01/my-site-recommendations.aspx</link><pubDate>Wed, 02 Jul 2008 03:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8679267</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8679267.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8679267</wfw:commentRss><description>&lt;H1&gt;My Site Recommendations &lt;/H1&gt;
&lt;P&gt;The following My Site recommendations are a composite of best practices taken from experiences at Microsoft and other large customers. &lt;/P&gt;
&lt;H2&gt;Planning &lt;/H2&gt;
&lt;P&gt;My Sites (even if they are as small as possible and only really used to store a profile picture) complicate backup/recovery, and add complexity and risk to ensuring the availability of the rest of the SSP farm.&amp;nbsp; Large organizations (100K+ employees) should consider putting My Sites into a separate farm. &lt;/P&gt;
&lt;P&gt;Very large organizations might consider multiple My Site &lt;A href="http://technet.microsoft.com/en-us/library/cc263115(TechNet.10).aspx" mce_href="http://technet.microsoft.com/en-us/library/cc263115(TechNet.10).aspx"&gt;farms&lt;/A&gt;, perhaps regionally located. This minimizes the number of content databases per farm and places the My Sites geographically closer to the site owners. Having fewer content databases per farm eases administrative burdens. Having My Sites hosted closer to site owners reduces the affects of network latency, thereby enhancing their usage experience. Multiple My Site farms can also provide more flexibility in managing the effort and time required to deploy updates and service packs to any given farm. &lt;/P&gt;
&lt;P&gt;Always create a dedicated Web Application to host My Sites. This allows leveraging web application policies to define security, facilitates content database management, and enables creation of zones for external access. &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;Do not customize the My Site site definition. Besides being unsupported, poorly designed customizations can severely impact server performance and unnecessarily consume valuable CPU and memory resources. Any customization should be done through feature stapling, see &lt;A href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx" mce_href="http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2007/03/22/customizing-moss-2007-my-sites-within-the-enterprise.aspx&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/cliffgreen/archive/2008/03/13/removing-web-parts-from-the-my-site-web-part-gallery.aspx" mce_href="http://blogs.msdn.com/cliffgreen/archive/2008/03/13/removing-web-parts-from-the-my-site-web-part-gallery.aspx"&gt;http://blogs.msdn.com/cliffgreen/archive/2008/03/13/removing-web-parts-from-the-my-site-web-part-gallery.aspx&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;Indexing &lt;/H2&gt;
&lt;P&gt;Install the latest service pack (currently SP1). Be sure to get the latest post service pack hotfixes applied, in particular 21243 (Office QFE). There is an issue where incremental crawls will not pick up all changes on My Sites without the post SP1 hotfix. &lt;/P&gt;
&lt;P&gt;Use a separate content source for People Profiles rather than allowing it to default to the Local Office SharePoint Server Sites content source. My Sites full crawls can be time consuming due to the large number of site collections. Creating a separate content source enables independent crawl configuration; such as, the type of crawl and crawl frequency for My Sites. &lt;/P&gt;
&lt;H2&gt;Provisioning &lt;/H2&gt;
&lt;P&gt;Remember, a user profile page will exist for all employees following a full Active Directory profile import, even if no My Sites have been created yet. Profile pages allow basic employee information to be exposed in search results. &lt;/P&gt;
&lt;P&gt;Allow users to create their own My Site on demand. Do &lt;SPAN style="TEXT-DECORATION: underline"&gt;not&lt;/SPAN&gt; pre-provision My Sites. Generally, pre-provisioning is a time consuming process potentially taking many days or weeks. It gains little, and costs storage and administrative headaches. &lt;/P&gt;
&lt;H2&gt;Rolling-out &lt;/H2&gt;
&lt;P&gt;Make My Sites available to everyone on day 1. This allows for "viral" adoption by early adopters. This will eventually encourage others to create My Sites, thereby getting the momentum rolling. &lt;/P&gt;
&lt;P&gt;Send out invitations to a small group of "pilot" users who would be interested in trying out My Sites, based on their role in the organization. The pilot group might contain a few hundred users. This gets a critical mass of My Sites in place quickly. &lt;/P&gt;
&lt;P&gt;Try regional roll-outs via "soft launches", which include poster campaigns or brown bag lunch training at selected campuses and offices. &lt;/P&gt;
&lt;P&gt;About the 3&lt;SUP&gt;rd&lt;/SUP&gt; or 4&lt;SUP&gt;th&lt;/SUP&gt; month, promote the My Site feature in a story on the Intranet portal home page. &lt;/P&gt;
&lt;P&gt;Around the 6&lt;SUP&gt;th&lt;/SUP&gt; month, incorporate the concept of "filling out your profile" into new employee orientation as a specific training exercise. Now essentially all new hires will have a My Site (because they need one to store their profile picture). &lt;/P&gt;
&lt;H2&gt;Encouraging On-Going Adoption &lt;/H2&gt;
&lt;P&gt;Encourage high profile "executive blogging" to drive awareness and adoption of My Sites. Blogging topics might include annual business planning, corporate strategy, rumor control, etc. This can demystify blogging by encouraging many participants to make daily posts about what they were doing and what they are thinking about. Note: this implies more frequent incremental crawling to incorporate blog entries into the search index. &lt;/P&gt;
&lt;P&gt;Also, consider setting up a "Blogs" scope on the search home page to facilitate blog discovery. This can be accomplished by setting up scope based on the Content Type of blog posts. An example follows: &lt;/P&gt;&lt;IMG height=78 src="http://blogs.msdn.com/photos/jimmiet/images/8679288/original.aspx" width=650 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8679288/original.aspx" mce_keep="true"&gt; 
&lt;P&gt;Note that this scope will pick up Blog Posts no matter where the Blog resides, as long as those a SharePoint Blogs crawled by a SharePoint Content Source. &lt;/P&gt;
&lt;P&gt;Consider adding a link on the profile page that allows others to send an email to ask the person to fill out their profile ("peer nagging"). &lt;/P&gt;
&lt;P&gt;Explore holding a contest or raffle – &lt;EM&gt;If you fill out (or update) your profile this month you are eligible to win a prize&lt;/EM&gt;. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8679267" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/My+Sites/default.aspx">My Sites</category></item><item><title>Vanity Site Collection URLs</title><link>http://blogs.msdn.com/jimmiet/archive/2008/06/01/vanity-site-collection-urls.aspx</link><pubDate>Sun, 01 Jun 2008 17:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8567657</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8567657.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8567657</wfw:commentRss><description>&lt;META content=Word.Document name=ProgId&gt;
&lt;META content="Microsoft Word 12" name=Generator&gt;
&lt;META content="Microsoft Word 12" name=Originator&gt;&lt;LINK href="Site%20Collection%20Vanity%20URLs_files/filelist.xml" rel=File-List mce_href="Site%20Collection%20Vanity%20URLs_files/filelist.xml"&gt;&lt;LINK href="Site%20Collection%20Vanity%20URLs_files/editdata.mso" rel=Edit-Time-Data mce_href="Site%20Collection%20Vanity%20URLs_files/editdata.mso"&gt;
&lt;STYLE&gt;
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
&lt;/STYLE&gt;
&lt;LINK href="Site%20Collection%20Vanity%20URLs_files/themedata.thmx" rel=themeData mce_href="Site%20Collection%20Vanity%20URLs_files/themedata.thmx"&gt;&lt;LINK href="Site%20Collection%20Vanity%20URLs_files/colorschememapping.xml" rel=colorSchemeMapping mce_href="Site%20Collection%20Vanity%20URLs_files/colorschememapping.xml"&gt;
&lt;STYLE&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1107304683 0 0 159 0;}
@font-face
	{font-family:Cambria;
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:roman;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073741899 0 0 159 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
@font-face
	{font-family:Tahoma;
	panose-1:2 11 6 4 3 5 4 4 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520082689 -1073717157 41 0 66047 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:6.0pt;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
h1
	{mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-link:"Heading 1 Char";
	mso-style-next:Normal;
	margin-top:24.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	line-height:115%;
	mso-pagination:widow-orphan lines-together;
	page-break-after:avoid;
	mso-outline-level:1;
	font-size:14.0pt;
	font-family:"Cambria","serif";
	mso-fareast-font-family:"Times New Roman";
	color:#365F91;
	mso-font-kerning:0pt;}
h2
	{mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-locked:yes;
	mso-style-link:"Heading 2 Char";
	mso-style-next:Normal;
	margin-top:12.0pt;
	margin-right:0in;
	margin-bottom:3.0pt;
	margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	page-break-after:avoid;
	mso-outline-level:2;
	font-size:14.0pt;
	font-family:"Arial","sans-serif";
	font-style:italic;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	mso-style-unhide:no;
	font-family:"Times New Roman","serif";
	mso-bidi-font-family:"Times New Roman";
	color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
	{mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-link:"Document Map Char";
	margin-top:6.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:0in;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-fareast-font-family:Calibri;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	margin-top:6.0pt;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:.5in;
	mso-add-space:auto;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst
	{mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:6.0pt;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle
	{mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	mso-add-space:auto;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast
	{mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-type:export-only;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:6.0pt;
	margin-left:.5in;
	mso-add-space:auto;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";}
span.Heading1Char
	{mso-style-name:"Heading 1 Char";
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Heading 1";
	mso-ansi-font-size:14.0pt;
	mso-bidi-font-size:14.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-hansi-font-family:Cambria;
	mso-bidi-font-family:"Times New Roman";
	color:#365F91;
	font-weight:bold;}
span.Heading2Char
	{mso-style-name:"Heading 2 Char";
	mso-style-noshow:yes;
	mso-style-priority:9;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Heading 2";
	mso-ansi-font-size:14.0pt;
	mso-bidi-font-size:14.0pt;
	font-family:"Cambria","serif";
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:major-latin;
	mso-fareast-font-family:"Times New Roman";
	mso-fareast-theme-font:major-fareast;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:major-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:major-bidi;
	font-weight:bold;
	font-style:italic;}
span.DocumentMapChar
	{mso-style-name:"Document Map Char";
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-unhide:no;
	mso-style-locked:yes;
	mso-style-link:"Document Map";
	mso-ansi-font-size:8.0pt;
	mso-bidi-font-size:8.0pt;
	font-family:"Tahoma","sans-serif";
	mso-ascii-font-family:Tahoma;
	mso-hansi-font-family:Tahoma;
	mso-bidi-font-family:Tahoma;}
p.Sample, li.Sample, div.Sample
	{mso-style-name:Sample;
	mso-style-priority:99;
	mso-style-unhide:no;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.3in;
	margin-bottom:.0001pt;
	line-height:115%;
	mso-pagination:widow-orphan;
	background:#D9D9D9;
	font-size:9.0pt;
	mso-bidi-font-size:11.0pt;
	font-family:"Courier New";
	mso-fareast-font-family:Calibri;
	mso-bidi-font-family:"Times New Roman";
	mso-no-proof:yes;}
span.SpellE
	{mso-style-name:"";
	mso-spl-e:yes;}
span.GramE
	{mso-style-name:"";
	mso-gram-e:yes;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	font-size:11.0pt;
	mso-ansi-font-size:11.0pt;
	mso-bidi-font-size:11.0pt;
	mso-ascii-font-family:Calibri;
	mso-fareast-font-family:Calibri;
	mso-hansi-font-family:Calibri;}
@page Section1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;
	mso-header-margin:.5in;
	mso-footer-margin:.5in;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
 /* List Definitions */
 @list l0
	{mso-list-id:-132;
	mso-list-type:simple;
	mso-list-template-ids:-1348853000;}
@list l0:level1
	{mso-level-tab-stop:1.25in;
	mso-level-number-position:left;
	margin-left:1.25in;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l1
	{mso-list-id:-131;
	mso-list-type:simple;
	mso-list-template-ids:-41805654;}
@list l1:level1
	{mso-level-tab-stop:1.0in;
	mso-level-number-position:left;
	margin-left:1.0in;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l2
	{mso-list-id:-130;
	mso-list-type:simple;
	mso-list-template-ids:719192296;}
@list l2:level1
	{mso-level-tab-stop:.75in;
	mso-level-number-position:left;
	margin-left:.75in;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l3
	{mso-list-id:-129;
	mso-list-type:simple;
	mso-list-template-ids:22303018;}
@list l3:level1
	{mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l4
	{mso-list-id:-128;
	mso-list-type:simple;
	mso-list-template-ids:-1882151978;}
@list l4:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:1.25in;
	mso-level-number-position:left;
	margin-left:1.25in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l5
	{mso-list-id:-127;
	mso-list-type:simple;
	mso-list-template-ids:1070477284;}
@list l5:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:1.0in;
	mso-level-number-position:left;
	margin-left:1.0in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l6
	{mso-list-id:-126;
	mso-list-type:simple;
	mso-list-template-ids:225887656;}
@list l6:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.75in;
	mso-level-number-position:left;
	margin-left:.75in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l7
	{mso-list-id:-125;
	mso-list-type:simple;
	mso-list-template-ids:387619706;}
@list l7:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.5in;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l8
	{mso-list-id:-120;
	mso-list-type:simple;
	mso-list-template-ids:-230531922;}
@list l8:level1
	{mso-level-tab-stop:.25in;
	mso-level-number-position:left;
	margin-left:.25in;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l9
	{mso-list-id:-119;
	mso-list-type:simple;
	mso-list-template-ids:-1072798772;}
@list l9:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:.25in;
	mso-level-number-position:left;
	margin-left:.25in;
	text-indent:-.25in;
	font-family:Symbol;}
@list l10
	{mso-list-id:301083591;
	mso-list-type:hybrid;
	mso-list-template-ids:1029606110 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l10:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l11
	{mso-list-id:824778230;
	mso-list-type:hybrid;
	mso-list-template-ids:-1354316894 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l11:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
@list l12
	{mso-list-id:1238252285;
	mso-list-type:hybrid;
	mso-list-template-ids:1808534394 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l12:level1
	{mso-level-number-format:bullet;
	mso-level-text:\F0B7;
	mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	font-family:Symbol;}
@list l13
	{mso-list-id:1655184215;
	mso-list-type:hybrid;
	mso-list-template-ids:-72568834 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l13:level1
	{mso-level-tab-stop:none;
	mso-level-number-position:left;
	text-indent:-.25in;
	mso-bidi-font-family:"Times New Roman";}
ol
	{margin-bottom:0in;}
ul
	{margin-bottom:0in;}
--&gt;
&lt;/STYLE&gt;

&lt;DIV class=Section1&gt;
&lt;H1&gt;Vanity Site Collection URLs&lt;/H1&gt;
&lt;P class=MsoNormal&gt;A customer recently asked for “vanity” URLs for each of the major departments; HR, Finance, Legal, etc.; so for example, HR would be &lt;A href="http://hr.bigcorp/" mce_href="http://hr.bigcorp"&gt;http://hr.bigcorp&lt;/A&gt;, and legal would be &lt;A href="http://legal.bigcorp/" mce_href="http://legal.bigcorp"&gt;http://legal.bigcorp&lt;/A&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;No problem you say, just create a web application for each department, give the web application default zone the vanity URL, create corresponding DNS entries, and the requirement is fulfilled.&lt;/P&gt;
&lt;P class=MsoNormal&gt;The problem is there are over 30 departments, not to mention foreign subsidiaries, and possibly other “I want my own vanity URL” requests from other corporate groups. Since web applications are heavy resource consumers, each one requiring one IIS web site per zone, basing vanity URLS on web applications would not be feasible.&lt;/P&gt;
&lt;P class=MsoNormal&gt;The traditional out-of-the-box site collection paths did not meet the requirements;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;Wildcard inclusion; e.g., &lt;A href="http://bigcorp/sites/finance" mce_href="http://bigcorp/sites/finance"&gt;http://bigcorp/sites/finance&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;Explicit inclusion: e.g., &lt;A href="http://bigcorp/finance" mce_href="http://bigcorp/finance"&gt;http://bigcorp/finance&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;For both wildcard inclusion and explicit inclusion, the vanity part of the URL is at the end, which is not what was desired.&lt;/P&gt;
&lt;H2&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;Host-Named Site Collections&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;Host-named site collections (what used to be called "scalable hosting mode" in WSS v2) provide exactly the needed capability. Don’t confuse the terms &lt;I style="mso-bidi-font-style: normal"&gt;host-named&lt;/I&gt; with &lt;I style="mso-bidi-font-style: normal"&gt;host headers&lt;/I&gt;. They are different concepts. The &lt;I style="mso-bidi-font-style: normal"&gt;host-named &lt;/I&gt;concept applies to the internal SharePoint virtual path mapping mechanism; whereas &lt;I style="mso-bidi-font-style: normal"&gt;host headers&lt;/I&gt; apply to IIS web sites independent of SharePoint.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Host-named site collections effectively allow use of an arbitrary URL, which is associated with an existing web application. There can be many host-named sites for a web application.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The net result is freedom to have as many vanity URLs as necessary, while limiting the number of web applications. We can have URLs like &lt;A href="http://finance.bigcorp/" mce_href="http://finance.bigcorp"&gt;http://finance.bigcorp&lt;/A&gt;, &lt;A href="http://finance/" mce_href="http://finance"&gt;http://finance&lt;/A&gt;, &lt;A href="http://my.finance/" mce_href="http://my.finance"&gt;http://my.finance&lt;/A&gt;, etc.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Host-named sites cannot be created through the UI. You must use stsadm. This should not deter you, since the syntax is simple. The secret is to add the –&lt;SPAN class=SpellE&gt;hhurl&lt;/SPAN&gt; parameter to the stsadm &lt;SPAN class=SpellE&gt;createsite&lt;/SPAN&gt; command. &lt;/P&gt;
&lt;H2&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;Host-Named Site Collections Limitations&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;As with all good things, there are some limitations and complications. The following blog is an excellent read: &lt;A href="https://mail.microsoft.com/OWA/redir.aspx?C=481d8f52969b40ccbabd436c73460ae3&amp;amp;URL=http%3a%2f%2fblogs.msdn.com%2fsharepoint%2farchive%2f2007%2f03%2f06%2fwhat-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx" target=_blank mce_href="https://mail.microsoft.com/OWA/redir.aspx?C=481d8f52969b40ccbabd436c73460ae3&amp;amp;URL=http%3a%2f%2fblogs.msdn.com%2fsharepoint%2farchive%2f2007%2f03%2f06%2fwhat-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Tahoma"&gt;http://blogs.msdn.com/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="LINE-HEIGHT: 115%; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Tahoma"&gt;.&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Tahoma','sans-serif'; mso-bidi-font-size: 10.0pt"&gt; &lt;/SPAN&gt;Quoting from this blog:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;Host-named site collections short circuit much of the AAM functionality, including the URL remapping functionality.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;They're always considered to be in the Default zone, and their URL is &lt;SPAN class=GramE&gt;always&lt;/SPAN&gt; the same URL you supplied when creating the site collection.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You cannot use host-named site collections with off-box SSL termination, port translation, or host header manipulation scenarios.&lt;/P&gt;
&lt;P class=MsoNormal&gt;This whitepaper is also highly recommended reading. It discusses how to enable SSL, and many other configuration issues:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN-LEFT: 0.5in"&gt;&lt;A href="http://office.microsoft.com/search/redir.aspx?AssetID=AM102157711033" mce_href="http://office.microsoft.com/search/redir.aspx?AssetID=AM102157711033"&gt;http://office.microsoft.com/search/redir.aspx?AssetID=AM102157711033&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;Step-by-Step Example&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;Assume we want to create a site collection with the vanity URL &lt;A href="http://finance.litwareinc.com/" mce_href="http://finance.litwareinc.com"&gt;http://finance.litwareinc.com&lt;/A&gt; in the &lt;A href="http://extranet.litwareinc.com/" mce_href="http://extranet.litwareinc.com"&gt;http://extranet.litwareinc.com&lt;/A&gt; web application.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 12pt; LINE-HEIGHT: 115%; mso-bidi-font-size: 11.0pt"&gt;Step 1:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 12pt; LINE-HEIGHT: 115%; mso-bidi-font-size: 11.0pt"&gt; &lt;/SPAN&gt;Open a command prompt as a farm administrator, and then enter this command, being sure to include the –&lt;SPAN class=SpellE&gt;hhurl&lt;/SPAN&gt; parameter:&lt;/P&gt;
&lt;P class=Sample&gt;&amp;gt;stsadm -o createsite -url http://finance.litwareinc.com -ownerlogin litwareinc\administrator -owneremail administrator@litwareinc.com &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;-hhurl http://extranet.litwareinc.com&lt;/SPAN&gt; -sitetemplate STS#1 -title "Finance Department" -quota DepartmentalSite&lt;/P&gt;
&lt;P class=Sample&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Sample&gt;Operation completed successfully.&lt;/P&gt;
&lt;P class=MsoNormal&gt;The new site collection appears in the site collection list of the &lt;B style="mso-bidi-font-weight: normal"&gt;extranet.litwareinc.com&lt;/B&gt; web application.&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;&lt;IMG height=269 src="http://blogs.msdn.com/photos/jimmiet/images/8553453/original.aspx" width=651 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553453/original.aspx"&gt; 
&lt;P class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 12pt; LINE-HEIGHT: 115%; mso-bidi-font-size: 11.0pt"&gt;Step 2:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 12pt; LINE-HEIGHT: 115%; mso-bidi-font-size: 11.0pt"&gt; &lt;/SPAN&gt;Create a DNS entry for this new name, pointing to the &lt;A href="http://extranet.litwareinc.com/" mce_href="http://extranet.litwareinc.com"&gt;http://extranet.litwareinc.com&lt;/A&gt; IP address. For local test, make an entry the hosts file.&lt;/P&gt;&lt;IMG height=335 src="http://blogs.msdn.com/photos/jimmiet/images/8553473/original.aspx" width=653 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553473/original.aspx"&gt; 
&lt;P class=MsoNormal&gt;You can now open a browser and navigate to the site collection.&lt;/P&gt;&lt;IMG height=343 src="http://blogs.msdn.com/photos/jimmiet/images/8553459/original.aspx" width=878 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553459/original.aspx"&gt; 
&lt;P class=MsoNormal&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 12pt; LINE-HEIGHT: 115%; mso-bidi-font-size: 11.0pt"&gt;Step 3:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 12pt; LINE-HEIGHT: 115%; mso-bidi-font-size: 11.0pt"&gt; &lt;/SPAN&gt;Create a search context for the new site collection, or include it as a starting address within an existing site collection. Start a crawl to include the site contents in the search index.&lt;/P&gt;&lt;IMG height=431 src="http://blogs.msdn.com/photos/jimmiet/images/8553480/original.aspx" width=671 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553480/original.aspx"&gt; &lt;IMG height=253 src="http://blogs.msdn.com/photos/jimmiet/images/8553458/original.aspx" width=634 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553458/original.aspx"&gt; 
&lt;P class=MsoNormal&gt;To test the search, create a simple text document in a shared document library. When the next increment crawl completes, you can then search for the document to verify the search results are using the vanity URL.&lt;/P&gt;&lt;IMG height=299 src="http://blogs.msdn.com/photos/jimmiet/images/8553481/original.aspx" width=685 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553481/original.aspx"&gt; &lt;IMG height=341 src="http://blogs.msdn.com/photos/jimmiet/images/8553465/original.aspx" width=643 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553465/original.aspx"&gt; 
&lt;H2&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'"&gt;The Kerberos Factor&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P class=MsoNormal&gt;The stsadm site creation command will give a warning if the host web application is using Kerberos authentication (negotiate).&lt;/P&gt;
&lt;P class=Sample&gt;&amp;gt;stsadm -o createsite -url http://finance.litwareinc.com –ownerlogin mossfs\administrator -owneremail administrator&lt;/P&gt;
&lt;P class=Sample&gt;@mossfs.com -hhurl http://dmz.litwareinc.com -sitetemplate STS#1 -title "Finance Department"&lt;/P&gt;
&lt;P class=Sample&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Sample&gt;WARNING: SharePoint no longer customizes Integrated Authentication security settings. This Web application may be using &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;Kerberos&lt;/SPAN&gt;, which can require manual configuration. See http://support.microsoft.c&lt;/P&gt;
&lt;P class=Sample&gt;om/?id=832769 for more information.&lt;/P&gt;
&lt;P class=Sample&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=Sample&gt;Operation completed successfully.&lt;/P&gt;
&lt;P class=MsoNormal&gt;It is necessary to register the vanity URL with Active Directory using &lt;SPAN class=SpellE&gt;setspn&lt;/SPAN&gt;.&lt;/P&gt;
&lt;P class=Sample&gt;&amp;gt;setspn -a http/finance.litwareinc.com litwareinc\administrator&lt;/P&gt;
&lt;P class=MsoNormal&gt;In my testing, I stumbled into another complication. Without realizing it at first, I created a site collection in the Intranet zone of a web application, which was configured for Kerberos.&lt;/P&gt;&lt;IMG height=185 src="http://blogs.msdn.com/photos/jimmiet/images/8553463/original.aspx" width=666 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553463/original.aspx"&gt; &lt;IMG height=187 src="http://blogs.msdn.com/photos/jimmiet/images/8553467/original.aspx" width=589 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553467/original.aspx"&gt; &lt;IMG height=160 src="http://blogs.msdn.com/photos/jimmiet/images/8553482/original.aspx" width=563 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553482/original.aspx"&gt; 
&lt;P class=MsoNormal&gt;After creating the site collection, adding the DNS (host file) entry, and executing &lt;SPAN class=SpellE&gt;setspn&lt;/SPAN&gt;, I got a “This site is under construction” error page every time I tried to browse to the site. I eventually worked-around this by explicitly adding a host header to the IIS web site. I consider this an unsupported solution, and so I recommend extensive testing before applying it to a production scenario.&lt;/P&gt;&lt;IMG height=357 src="http://blogs.msdn.com/photos/jimmiet/images/8553474/original.aspx" width=595 mce_src="http://blogs.msdn.com/photos/jimmiet/images/8553474/original.aspx"&gt; &lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8567657" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/Site+Collection/default.aspx">Site Collection</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/URL/default.aspx">URL</category></item><item><title>“Hidden” SSP Timer Jobs</title><link>http://blogs.msdn.com/jimmiet/archive/2008/04/20/hidden-ssp-timer-jobs.aspx</link><pubDate>Sun, 20 Apr 2008 17:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8412840</guid><dc:creator>jimmiet</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8412840.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8412840</wfw:commentRss><description>&lt;META content="Microsoft Word 12 (filtered)" name=Generator&gt;
&lt;STYLE&gt;@font-face {
	font-family: Cambria Math;
}
@font-face {
	font-family: Cambria;
}
@font-face {
	font-family: Calibri;
}
@font-face {
	font-family: Tahoma;
}
@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; }
P.MsoNormal {
	FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"
}
LI.MsoNormal {
	FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"
}
DIV.MsoNormal {
	FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: "Times New Roman","serif"
}
H1 {
	FONT-WEIGHT: bold; FONT-SIZE: 14pt; MARGIN: 24pt 0in 0pt; COLOR: #365f91; LINE-HEIGHT: 115%; FONT-FAMILY: "Cambria","serif"; mso-style-link: "Heading 1 Char"
}
A:link {
	COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
	COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
	COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
	COLOR: purple; TEXT-DECORATION: underline
}
P.MsoDocumentMap {
	FONT-SIZE: 8pt; BACKGROUND: yellow; MARGIN: 3pt 0in; COLOR: #993300; LINE-HEIGHT: 13pt; FONT-FAMILY: "Tahoma","sans-serif"
}
LI.MsoDocumentMap {
	FONT-SIZE: 8pt; BACKGROUND: yellow; MARGIN: 3pt 0in; COLOR: #993300; LINE-HEIGHT: 13pt; FONT-FAMILY: "Tahoma","sans-serif"
}
DIV.MsoDocumentMap {
	FONT-SIZE: 8pt; BACKGROUND: yellow; MARGIN: 3pt 0in; COLOR: #993300; LINE-HEIGHT: 13pt; FONT-FAMILY: "Tahoma","sans-serif"
}
P {
	FONT-SIZE: 12pt; MARGIN: 0in 0in 7.5pt; FONT-FAMILY: "Times New Roman","serif"
}
P.Sample {
	FONT-SIZE: 9pt; BACKGROUND: #d9d9d9; MARGIN: 0in 0in 0pt 0.3in; LINE-HEIGHT: 115%; FONT-FAMILY: "Courier New"; mso-style-name: Sample
}
LI.Sample {
	FONT-SIZE: 9pt; BACKGROUND: #d9d9d9; MARGIN: 0in 0in 0pt 0.3in; LINE-HEIGHT: 115%; FONT-FAMILY: "Courier New"; mso-style-name: Sample
}
DIV.Sample {
	FONT-SIZE: 9pt; BACKGROUND: #d9d9d9; MARGIN: 0in 0in 0pt 0.3in; LINE-HEIGHT: 115%; FONT-FAMILY: "Courier New"; mso-style-name: Sample
}
SPAN.Heading1Char {
	FONT-WEIGHT: bold; COLOR: #365f91; FONT-FAMILY: "Cambria","serif"; mso-style-link: "Heading 1"; mso-style-name: "Heading 1 Char"
}
DIV.Section1 {
	page: Section1
}
&lt;/STYLE&gt;

&lt;DIV class=Section1&gt;
&lt;P class=MsoNormal style="MARGIN: 6pt 0in; LINE-HEIGHT: 115%"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'"&gt;Not all timer jobs are visible in the Central Administration timer job definition page. There are MOSS 2007 timer jobs in the SSP application which don’t appear in the Central Administration page. It makes sense that these jobs are not visible, since there is nothing you can modify or disable. All the same, it would be nice to know what these jobs are, and what their schedules are, in case you want to schedule other potentially conflicting activities.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 6pt 0in; LINE-HEIGHT: 115%"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Calibri','sans-serif'"&gt;You can see the names of these SSP jobs by using &lt;B&gt;stsadm enumssptimerjobs&lt;/B&gt; command, as in the following console sample (view &lt;A class="" title="Hidden SSP Timer Jobs" href="http://blogs.msdn.com/jimmiet/pages/hidden-ssp-timer-jobs.aspx" mce_href="http://blogs.msdn.com/jimmiet/pages/hidden-ssp-timer-jobs.aspx"&gt;entire article&lt;/A&gt; ...)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 6pt 0in; LINE-HEIGHT: 115%"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8412840" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/Profile+Import/default.aspx">Profile Import</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>How are SSP Associations Changed?</title><link>http://blogs.msdn.com/jimmiet/archive/2008/04/19/how-are-ssp-associations-changed.aspx</link><pubDate>Sun, 20 Apr 2008 00:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8410454</guid><dc:creator>jimmiet</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8410454.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8410454</wfw:commentRss><description>&lt;DIV class=Section1&gt;
&lt;P class=MsoNormal&gt;I recently heard a question, “How do you change SSP web application associations through the object model (OM)?”&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Searching the OM online help didn’t find any results. Any yet theoretically, it must be possible, since you can set the web application SSP association through Central Administration.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Then the thought occurred, why not reverse engineer the Central Administration page to see how it is done? Here are the steps. This technique can be applied to any administration page if you are curious how the product team wrote the code. (view &lt;A class="" title="entire article" href="http://blogs.msdn.com/jimmiet/pages/how-are-ssp-associations-changed.aspx" mce_href="http://blogs.msdn.com/jimmiet/pages/how-are-ssp-associations-changed.aspx"&gt;entire article&lt;/A&gt;...)&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8410454" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>DST and Timer Jobs</title><link>http://blogs.msdn.com/jimmiet/archive/2008/03/29/dst-and-timer-jobs.aspx</link><pubDate>Sun, 30 Mar 2008 00:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8343804</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8343804.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8343804</wfw:commentRss><description>&lt;P&gt;Now that daylight savings has arrived in the United States, have you noticed problems with timer jobs not running when expected? &lt;/P&gt;
&lt;P&gt;I recently encountered this trying to deploy solution packages using stsadm scripts. In the past, these scripts ran flawlessly. The old solutions were retracted and deleted, the new solution versions added and deployed across all farm servers within a few minutes, and life was good. &lt;/P&gt;
&lt;P&gt;Last week I was working with a customer to deploy a new staging farm. We got to the point at which the solution deployment scripts were run. We waited, and waited, and waited. The script was hung at &lt;STRONG&gt;stsadm –o execadmsvcjobs&lt;/STRONG&gt;, which was called after executing several &lt;STRONG&gt;stsadm –o deploysolution -name solutionpackage1.wsp -immediate -force –allowGacDeployment &lt;/STRONG&gt;statements. What should have happened is the timer jobs to deploy the solution across the farm servers should have executed within about a minute. Instead, over an hour passed. Then suddenly, the jobs ran. What caused this odd behavior, which had never happened before with the same scripts? Was there a farm configuration problem? &lt;/P&gt;
&lt;P&gt;Then a thought occurred. The time had changed to daylight savings a week before; moving the clocks ahead one hour. Could there be a connection? &lt;/P&gt;
&lt;P&gt;A little research brought the problem to light. WSS 3.0 SP1 includes fixes to timer job DST scheduling problems. See 938663 ( &lt;A href="http://support.microsoft.com/kb/938663/" mce_href="http://support.microsoft.com/kb/938663/"&gt;http://support.microsoft.com/kb/938663/&lt;/A&gt; ) One-time timer jobs in Windows SharePoint Services 3.0 are delayed by at least one hour when the jobs are scheduled to occur during daylight saving time (DST). &lt;/P&gt;
&lt;P&gt;A quick check in &lt;STRONG&gt;Central Administration &amp;gt; Operations &amp;gt; Servers in Farm&lt;/STRONG&gt;, showed the installed version number was &lt;STRONG&gt;12.0.0.4518&lt;/STRONG&gt;. It should have been &lt;STRONG&gt;12.0.0.6219&lt;/STRONG&gt; if SP1 was installed. We installed WSS 3.0 SP1, and the timer job scheduling problem disappeared! &lt;/P&gt;
&lt;P&gt;I strongly encourage installation of WSS/MOSS SP1. It fixes many issues, DST just being one example. Taken time to read and following the installation instructions precisely! Remember, you have to update all servers in the farm at once. There is no rolling update, so if you have a multiple server farm with large content databases, plan on doing this over a weekend to avoid disrupting your user community.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8343804" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SP1/default.aspx">SP1</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/DST/default.aspx">DST</category></item><item><title>User Profile Change Logging</title><link>http://blogs.msdn.com/jimmiet/archive/2008/03/29/user-profile-change-logging.aspx</link><pubDate>Sat, 29 Mar 2008 23:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8343760</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8343760.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8343760</wfw:commentRss><description>&amp;nbsp; 
&lt;H1&gt;Profile Change Logging&lt;/H1&gt;
&lt;P&gt;There is a table in the SSP database named &lt;B&gt;UserProfileEventLog&lt;/B&gt;. The table maintains a history of user profile property changes. By default, it retains 7 days of history. This table can cause problems in a couple of ways.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;First issue: size&lt;/B&gt;. This table contains one row per change of a property in a user profile. The row contains the old and new property values, along with associated metadata like the datetime the property was changed. The implication is that the table can grow large. Assume you just configured the profile import and are ready to start the first Active Directory import. Further, assume your organization has 100,000 user accounts, and each account be populated with 12 AD attributes.&amp;nbsp; The full import will result in 100,000 X 12 = 1.2 millions rows being inserted into UserProfileEventLog. &amp;nbsp;To extend the example, assume you also have a BDC import connection populating another 20 properties from your company's HR system. That adds another 2 million rows. There are now 3.2 million rows in the event log table.&amp;nbsp; If each row is 100 bytes (old value, new value, plus metadata), the table is now approximately 300 MB in size.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Second issue: deleting old entries&lt;/B&gt;. The change history is kept for a configurable number of days. The concern is how many rows will have to be deleted on a given day? The number of days of history is 7 days be default, but can be set using &lt;B&gt;stsadm.exe -o profilechangelog -title &amp;lt;SSP Name&amp;gt; -daysofhistory &amp;lt;number of days&amp;gt; -generateanniversaries&lt;/B&gt; (&lt;A href="http://technet.microsoft.com/en-us/library/cc263013.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc263013.aspx"&gt;http://technet.microsoft.com/en-us/library/cc263013.aspx&lt;/A&gt;). &amp;nbsp;The critical issue is that MOSS has to remove a full day of history every day to honor the &lt;I&gt;daysofhistory&lt;/I&gt; setting. Using the numbers in the preceding paragraph, 7 days after the first full import, MOSS is going to delete 3.2 millions rows of data all at once! &amp;nbsp;What makes this an issue is that this is done with a single SQL statement, something like &lt;B&gt;DELETE FROM&amp;nbsp; UserProfileEventLog WHERE EventId &amp;lt; @MinEventTime&lt;/B&gt;. Think of the implications. As a single statement, this will hold locks until all 3.2 million rows are deleted. These locks might prevent other database transactions from completing; but it also means the transaction log (even with simple recovery mode) cannot be truncated, and will therefore grow until at least this DELETE statement completes. I have seen this delete statement run for 4 hours, with the transaction log quadrupling in size.&lt;/P&gt;
&lt;P&gt;This is little you can do to avoid this. Although you can adjust the number of days of history, MOSS will eventually try to delete an entire day's history at some point. The deletion is done by an internal timer job buried within the SSP. The job is hard coded to run at 10:00 PM daily. You cannot change this scheduled time.&lt;/P&gt;
&lt;P&gt;What are the take-aways?&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;1. Be prepared for an occasional long running DELETE statement. Ensure you have sufficient transaction log space to accommodate the potential transaction log growth.&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;2. Don't schedule any other timer jobs or database maintenance for 10:00 PM to minimize possible deadlocks and transaction timeouts.&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;3. Be careful using &lt;STRONG&gt;stsadm -o profilechangelog&lt;/STRONG&gt; to reduce the number of days of history, because the next time 10:00 PM comes, MOSS will try to delete multiple days of history all at once.&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8343760" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/Profile+Import/default.aspx">Profile Import</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/User+Profile/default.aspx">User Profile</category></item><item><title>SharePoint Database Log File Cancer</title><link>http://blogs.msdn.com/jimmiet/archive/2008/03/17/sharepoint-database-log-file-cancer.aspx</link><pubDate>Tue, 18 Mar 2008 01:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8297181</guid><dc:creator>jimmiet</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8297181.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8297181</wfw:commentRss><description>&amp;nbsp; 
&lt;H1&gt;SharePoint Database Log File Cancer&lt;/H1&gt;
&lt;P&gt;The database log files can grow like cancer, consuming large amounts of disk storage and impacting performance if not properly managed. This can be a particular problem for smaller deployments without dedicated DBAs or database experienced local administrators.&lt;/P&gt;
&lt;P&gt;The underlying issue is that native SharePoint backups do not backup the log files. Content databases are created with FULL recovery model if the System Model database has the FULL recovery model specified. This results in unbounded log file growth. It is not unusual for log files to grow to several times the size of the data files before someone notices the problem or worse yet, the log file consumes all available space such that the database server no longer responds. (view &lt;A class="" title="SharePoint Database Log File Cancer" href="http://blogs.msdn.com/jimmiet/pages/sharepoint-database-log-file-cancer.aspx" mce_href="http://blogs.msdn.com/jimmiet/pages/sharepoint-database-log-file-cancer.aspx"&gt;entire article&lt;/A&gt; ... )&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8297181" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/Database+Logs/default.aspx">Database Logs</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>ULS Log File Data Mining</title><link>http://blogs.msdn.com/jimmiet/archive/2008/03/15/uls-log-file-data-mining.aspx</link><pubDate>Sat, 15 Mar 2008 20:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8234811</guid><dc:creator>jimmiet</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/jimmiet/comments/8234811.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jimmiet/commentrss.aspx?PostID=8234811</wfw:commentRss><description>&lt;META content=Word.Document name=ProgId&gt;
&lt;META content="Microsoft Word 12" name=Generator&gt;
&lt;META content="Microsoft Word 12" name=Originator&gt;&lt;LINK href="ULS%20Log%20Parsing_files/filelist.xml" rel=File-List mce_href="ULS%20Log%20Parsing_files/filelist.xml"&gt;&lt;LINK href="ULS%20Log%20Parsing_files/themedata.thmx" rel=themeData mce_href="ULS%20Log%20Parsing_files/themedata.thmx"&gt;&lt;LINK href="ULS%20Log%20Parsing_files/colorschememapping.xml" rel=colorSchemeMapping mce_href="ULS%20Log%20Parsing_files/colorschememapping.xml"&gt;
&lt;STYLE&gt;@font-face {
	font-family: Wingdings;
}
@font-face {
	font-family: Cambria Math;
}
@font-face {
	font-family: Cambria;
}
@font-face {
	font-family: Calibri;
}
@font-face {
	font-family: Tahoma;
}
@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.0in 1.0in 1.0in; mso-header-margin: .5in; mso-footer-margin: .5in; mso-paper-source: 0; }
P.MsoNormal {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; mso-pagination: widow-orphan
}
LI.MsoNormal {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; mso-pagination: widow-orphan
}
DIV.MsoNormal {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; mso-pagination: widow-orphan
}
H1 {
	FONT-SIZE: 14pt; MARGIN: 24pt 0in 0pt; COLOR: #365f91; LINE-HEIGHT: 115%; FONT-FAMILY: "Cambria","serif"; mso-fareast-font-family: "Times New Roman"; mso-style-priority: 9; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan lines-together; mso-style-next: Normal; mso-outline-level: 1; mso-font-kerning: 0pt; mso-style-link: "Heading 1 Char"
}
A:link {
	COLOR: blue; TEXT-DECORATION: underline; text-underline: single; mso-style-priority: 99
}
SPAN.MsoHyperlink {
	COLOR: blue; TEXT-DECORATION: underline; text-underline: single; mso-style-priority: 99
}
A:visited {
	COLOR: purple; TEXT-DECORATION: underline; mso-themecolor: followedhyperlink; text-underline: single; mso-style-priority: 99; mso-style-noshow: yes
}
SPAN.MsoHyperlinkFollowed {
	COLOR: purple; TEXT-DECORATION: underline; mso-themecolor: followedhyperlink; text-underline: single; mso-style-priority: 99; mso-style-noshow: yes
}
P.MsoDocumentMap {
	FONT-SIZE: 8pt; MARGIN: 6pt 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; mso-fareast-font-family: Calibri; mso-style-priority: 99; mso-pagination: widow-orphan; mso-style-noshow: yes; mso-style-link: "Document Map Char"
}
LI.MsoDocumentMap {
	FONT-SIZE: 8pt; MARGIN: 6pt 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; mso-fareast-font-family: Calibri; mso-style-priority: 99; mso-pagination: widow-orphan; mso-style-noshow: yes; mso-style-link: "Document Map Char"
}
DIV.MsoDocumentMap {
	FONT-SIZE: 8pt; MARGIN: 6pt 0in 0pt; FONT-FAMILY: "Tahoma","sans-serif"; mso-fareast-font-family: Calibri; mso-style-priority: 99; mso-pagination: widow-orphan; mso-style-noshow: yes; mso-style-link: "Document Map Char"
}
P.MsoListParagraph {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in 6pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto
}
LI.MsoListParagraph {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in 6pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto
}
DIV.MsoListParagraph {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in 6pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto
}
P.MsoListParagraphCxSpFirst {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in 0pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
LI.MsoListParagraphCxSpFirst {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in 0pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
DIV.MsoListParagraphCxSpFirst {
	FONT-SIZE: 11pt; MARGIN: 6pt 0in 0pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
P.MsoListParagraphCxSpMiddle {
	FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
LI.MsoListParagraphCxSpMiddle {
	FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
DIV.MsoListParagraphCxSpMiddle {
	FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
P.MsoListParagraphCxSpLast {
	FONT-SIZE: 11pt; MARGIN: 0in 0in 6pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
LI.MsoListParagraphCxSpLast {
	FONT-SIZE: 11pt; MARGIN: 0in 0in 6pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
DIV.MsoListParagraphCxSpLast {
	FONT-SIZE: 11pt; MARGIN: 0in 0in 6pt 0.5in; LINE-HEIGHT: 115%; FONT-FAMILY: "Calibri","sans-serif"; mso-fareast-font-family: Calibri; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 34; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-add-space: auto; mso-style-type: export-only
}
SPAN.Heading1Char {
	FONT-WEIGHT: bold; COLOR: #365f91; FONT-FAMILY: "Cambria","serif"; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: "Times New Roman"; mso-ascii-font-family: Cambria; mso-hansi-font-family: Cambria; mso-bidi-font-family: "Times New Roman"; mso-style-priority: 9; mso-style-unhide: no; mso-style-link: "Heading 1"; mso-style-name: "Heading 1 Char"; mso-style-locked: yes; mso-ansi-font-size: 14.0pt
}
SPAN.DocumentMapChar {
	FONT-FAMILY: "Tahoma","sans-serif"; mso-bidi-font-size: 8.0pt; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma; mso-style-priority: 99; mso-style-unhide: no; mso-style-noshow: yes; mso-style-link: "Document Map"; mso-style-name: "Document Map Char"; mso-style-locked: yes; mso-ansi-font-size: 8.0pt
}
P.Sample {
	FONT-SIZE: 9pt; BACKGROUND: #d9d9d9; MARGIN: 0in 0in 0pt 0.3in; LINE-HEIGHT: 115%; FONT-FAMILY: "Courier New"; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Calibri; mso-no-proof: yes; mso-bidi-font-family: "Times New Roman"; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-style-name: Sample
}
LI.Sample {
	FONT-SIZE: 9pt; BACKGROUND: #d9d9d9; MARGIN: 0in 0in 0pt 0.3in; LINE-HEIGHT: 115%; FONT-FAMILY: "Courier New"; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Calibri; mso-no-proof: yes; mso-bidi-font-family: "Times New Roman"; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-style-name: Sample
}
DIV.Sample {
	FONT-SIZE: 9pt; BACKGROUND: #d9d9d9; MARGIN: 0in 0in 0pt 0.3in; LINE-HEIGHT: 115%; FONT-FAMILY: "Courier New"; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Calibri; mso-no-proof: yes; mso-bidi-font-family: "Times New Roman"; mso-style-unhide: no; mso-style-qformat: yes; mso-pagination: widow-orphan; mso-style-name: Sample
}
SPAN.SpellE {
	mso-style-name: ""; mso-spl-e: yes
}
SPAN.GramE {
	mso-style-name: ""; mso-gram-e: yes
}
.MsoChpDefault {
	mso-fareast-font-family: Calibri; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri; mso-style-type: export-only; mso-default-props: yes
}
DIV.Section1 {
	page: Section1
}
OL {
	MARGIN-BOTTOM: 0in
}
UL {
	MARGIN-BOTTOM: 0in
}
&lt;/STYLE&gt;

&lt;DIV class=Section1&gt;
&lt;H1&gt;ULS Log File Data Mining&lt;/H1&gt;
&lt;P class=MsoNormal&gt;Finding meaningful information in SharePoint ULS logs is frustrating. It can be like finding a needle in a hay stack. &lt;/P&gt;
&lt;P class=MsoNormal&gt;Assume you want to find all the Exceptions thrown in the last 72 hours. You go to the LOGS folder (but due to some categories set to verbose logging, coupled with a recurring error) to discover there are 6 GB of log files. Many of the individual log files are so large you cannot open them with Excel or Notepad. What do you do now?&lt;/P&gt;
&lt;P class=MsoNormal&gt;Fortunately, there is a tool available that makes it possible to data mine ULS logs. This tool was originally developed to data mine IIS log files. Over the years it has been enhanced and extended to data mine other log file formats; such as, system event logs, comma separate text files, Network Monitor logs, the registry, even the file system! It is indeed the Swiss Army knife of log file data mining. It is named &lt;B style="mso-bidi-font-weight: normal"&gt;Log Parser&lt;/B&gt;, now in version 2.2. LogParser can slice-and-dice log files in a multitude of ways. It can output the results to text files, SQL Server tables, or charts. It is indeed, a great way to analyze ULS logs! (view &lt;A class="" title="ULS Log File Data Mining" href="http://blogs.msdn.com/jimmiet/pages/uls-log-file-data-mining.aspx" mce_href="http://blogs.msdn.com/jimmiet/pages/uls-log-file-data-mining.aspx"&gt;entire article&lt;/A&gt; ...)&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8234811" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jimmiet/archive/tags/Data+Mining/default.aspx">Data Mining</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/LogParser/default.aspx">LogParser</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/ULS+Log/default.aspx">ULS Log</category><category domain="http://blogs.msdn.com/jimmiet/archive/tags/SharePoint/default.aspx">SharePoint</category></item></channel></rss>