<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://colinborrowman.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fcolinborrowman.spaces.live.com%2fblog%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Colin Borrowman's SharePoint Blog: Blog</title><description /><link>http://colinborrowman.spaces.live.com/blog</link><language>en-US</language><pubDate>Tue, 19 Aug 2008 14:12:51 GMT</pubDate><lastBuildDate>Tue, 19 Aug 2008 14:12:51 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://colinborrowman.spaces.live.com/feed.rss</cf:parentRSS><live:type>blog</live:type><live:identity><live:id>6620826713823609871</live:id><live:alias>colinborrowman</live:alias></live:identity><image><title>Colin Borrowman's SharePoint Blog: Blog</title><url>http://blufiles.storage.live.com/y1pnLk_nq5a3CaYbG0U3x_iMhF03hJGOICkq4Ys7x4VMbja55ROBbFNnU1DxaBnbmjD</url><link>http://colinborrowman.spaces.live.com/blog</link></image><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Debugging "File Not Found. at System.Reflection.Assembly"</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!264.entry</link><description>&lt;p&gt;Have you ever deployed your application to SharePoint only to have one or more pages start failing to load with the infamous &amp;quot;File Not Found&amp;quot; error? Or even just the blank &amp;quot;Error&amp;quot; if you don't have extended error messages turned on? &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;File Not Found.   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark&amp;amp; stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) &lt;br&gt;   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark&amp;amp; stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) &lt;br&gt;   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark&amp;amp; stackMark, Boolean forIntrospection) &lt;br&gt;   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark&amp;amp; stackMark, Boolean forIntrospection) &lt;br&gt;   at System.Reflection.Assembly.Load(String assemblyString) &lt;br&gt;   at System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)&lt;/font&gt;&lt;/em&gt;&lt;/blockquote&gt; &lt;p&gt;It usually means you need to add a page reference to allow the page markup to load and resolve your page (or your binary needs to be somewhere it can find it.) Sometime you can figure out what it might be if you just added a new control or referenced some assembly in the page markup. But sometime you don't know and there aren't any good clues. So it happened to me again today and I decided to document the exact steps required to figure out what blew up.  &lt;p&gt;Find a copy of the Fusion Log Viewer &amp;quot;FUSLOGVW.EXE.&amp;quot; It probably will not be on your deployment server, I think its only installed with development software. I found two copies on my dev box: &lt;blockquote&gt; &lt;p&gt;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\FUSLOGVW.EXE dated 9/23/2005 and &lt;br&gt;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\FUSLOGVW.EXE dated 11/7/2007&lt;/blockquote&gt; &lt;p&gt;1. Copy the more recent version to the deployment server and run FUSLOGVW.EXE &lt;p&gt;1. Click Delete All &lt;p&gt;2. Run IISRESET from a command prompt &lt;p&gt;3. Refresh or load the page you were getting an error on in your browser &lt;p&gt;4. Click the Refresh button in the Fusion Log Viewer &lt;p&gt;5. Start looking (from the bottom up) for log entry for App_Web_error.aspx...  This is the error page being loaded to tell you &amp;quot;Error&amp;quot; &lt;p&gt;&lt;a href="http://owqaqg.blu.livefilestore.com/y1pEpbE-gAH32LvVlqgNJvipOK90qtSCb-vK278qxDphqHwb2-v-vLt49x6_aXzSbFABqTAibomDKNS9KCPp9K3fA?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=340 alt=viewer src="http://owqaqg.blu.livefilestore.com/y1pd-vcvllpxlTLfofrMz1J65XRcuwkuRBnHmTCNWHAVG0t5XQRRPMPrzu82g_pq0Xnv8v_W-Yj1KS1tXOdOMp7h_g7--W1wdik?PARTNER=WRITER" width=687 border=0&gt;&lt;/a&gt;  &lt;p&gt;6. Start looking at the next few items above it for the first assembly that is part of your project. Double click on each one to look at the log entry and see if any of them failed.  &lt;p&gt;&lt;a href="http://owqaqg.blu.livefilestore.com/y1pd-vcvllpxlTG_1zt1BAoWi9OVz8P0eITGjLOGBJC701-da4VS68UMkyEKdT5l4X_iDAAxr7fabGm_vtCP6wognPu_nZSxESh?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=544 alt=log src="http://owqaqg.blu.livefilestore.com/y1pd-vcvllpxlTQdirDavWrG2wTUdD5Ia1tcR58VC0BQ2_i8C6qlvz3NFP5ugzoq1MZ_CZ3zGCRP9P9qS5goQ96qlEXYgaPpHFz?PARTNER=WRITER" width=686 border=0&gt;&lt;/a&gt;  &lt;p&gt;In my case, I found the dtSearchNetApi2 was trying to load but could not be found. It was being referenced by one of the assemblies being loaded. I need to put it in a location that is searched for binaries, or simply put it in the GAC. Sometimes just adding a page @Register to the markup is all you need. Fixing the problem is easy once you know what problem you are fixing.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Debugging+%22File+Not+Found.+at+System.Reflection.Assembly%22&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!264.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!264.entry</guid><pubDate>Tue, 10 Jun 2008 20:42:33 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!264/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!264.entry#comment</wfw:comment><dcterms:modified>2008-06-10T20:42:33Z</dcterms:modified></item><item><title>Get the list of Blocked File Extensions (file types)</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!256.entry</link><description>&lt;p&gt;This initially looked more difficult that it really is. I didn't find too many examples of how to do this. There appears to be an approach through the adminitrative SDK, since you maintain these through the central admin pages.  I also found some examples of the now obsolete &lt;a href="http://msdn.microsoft.com/en-us/library/ms996152.aspx"&gt;SPGlobalConfig&lt;/a&gt;.BlockedFileTypes. &lt;p&gt;Turns out it is rather simple, even for a standard user. You can obtain a reference to the current WebApplication from the current site collection object and the blocked file extensions are available right there via BlockedFileExtensions. &lt;p&gt;Here is a sample test.aspx page that dumps the BlockedFileExtensions. The page itself is handy shell to quickly try out an SDK call or two. Just drop it inside C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS (or a sub folder) and access it with http:\\localhost\_layouts\(optional sub folder)\test.aspx &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt; &lt;br&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint&amp;quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ Assembly Name=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;/font&gt;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;gt;&lt;br&gt;&amp;lt;html xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt; &amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;    &amp;lt;title&amp;gt;Test&amp;lt;/title&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;%&lt;br&gt;    Microsoft.SharePoint.Administration.SPWebApplication webapp = SPContext.Current.Site.WebApplication; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;    Response.Write(&amp;quot;Blocked file extensions:&amp;lt;br /&amp;gt;&amp;quot;);&lt;br&gt;    foreach (string s in webapp.BlockedFileExtensions)&lt;br&gt;    {&lt;br&gt;        Response.Write(s + &amp;quot;,&amp;quot;);&lt;br&gt;    } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;    Response.Write(&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);  &lt;br&gt; %&amp;gt;&lt;br&gt;&amp;lt;/form&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;/font&gt; &lt;p&gt;Results: &lt;p&gt;Blocked file extensions:&lt;br&gt;ade,adp,app,asa,ashx,asmx,asp,bas,bat,cdx,cer,chm,class,cmd,com,config,cpl,crt,csh,der,dll,exe,fxp,gadget,hlp,hta,htr,htw,ida,idc,idq,&lt;br&gt;ins,isp,its,jse,ksh,lnk,mad,maf,mag,mam,maq,mar,mas,mat,mau,mav,maw,mda,mdb,mde,mdt,mdw,mdz,msc,msh,msh1,msh1xml,&lt;br&gt;msh2,msh2xml,mshxml,msi,msp,mst,ops,pcd,pif,prf,prg,printer,pst,reg,rem,scf,scr,sct,shb,shs,shtm,shtml,soap,stm,url,vb,vbe,vbs,ws,&lt;br&gt;wsc,wsf,wsh,&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Get+the+list+of+Blocked+File+Extensions+(file+types)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!256.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!256.entry</guid><pubDate>Wed, 14 May 2008 20:37:01 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!256/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!256.entry#comment</wfw:comment><dcterms:modified>2008-05-14T20:37:01Z</dcterms:modified></item><item><title>SharePoint Vista Sidebar Gadget</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!251.entry</link><description>Here's a new CodePlex project I've been working on in my spare time. This is a sample project showing how to create a Windows Vista Sidebar Gadget that communicates with a SharePoint site via web services. &lt;p&gt;&lt;a title="http://www.codeplex.com/SharePointSidebar" href="http://www.codeplex.com/SharePointSidebar"&gt;http://www.codeplex.com/SharePointSidebar&lt;/a&gt; &lt;p&gt;It is in the proof-of-concept phase right now and it currently only works with windows or anonymous authentication. But it will continue to evolve to include basic and forms based authentication as well. &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+SharePoint+Vista+Sidebar+Gadget&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!251.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!251.entry</guid><pubDate>Wed, 02 Apr 2008 10:59:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!251/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!251.entry#comment</wfw:comment><dcterms:modified>2008-04-02T10:59:08Z</dcterms:modified></item><item><title>CSS filter DXImageTransform.Microsoft.Gradient has a very specific syntax</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!249.entry</link><description>&lt;p&gt;What's the difference between the following CSS entries?  &lt;p&gt;.sample1&lt;br&gt;{&lt;br&gt;    filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FEE9EC', endColorStr='#FFFFFF', gradientType= '0' );&lt;br&gt;} &lt;p&gt; .sample2&lt;br&gt;{&lt;br&gt;    filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr= '#FEE9EC', endColorStr='#FFFFFF', gradientType= '0' );&lt;br&gt;} &lt;p&gt;If you guessed that sample2 wouldn't work AND would break all CSS following it, you would be right. Huh? Notice the space following startColorStr= in sample2? How does one space break everything? Apparently the syntax for DXImageTransform.Microsoft.Gradient is so specific it does here. In IE all CSS following the entry stops working. In Firefox, some of the following CSS works, but isn't perfect.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+CSS+filter+DXImageTransform.Microsoft.Gradient+has+a+very+specific+syntax&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!249.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!249.entry</guid><pubDate>Sun, 16 Mar 2008 12:45:49 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!249/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!249.entry#comment</wfw:comment><dcterms:modified>2008-03-16T12:45:49Z</dcterms:modified></item><item><title>Trouble using SPContext.Current in an IHttpAsyncHandler based http handler?</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!246.entry</link><description>&lt;p&gt;I have a http handler (ashx) that obtains content from a document library and renders a thumbnail of it, returning a jpeg stream back to the browser. Today while testing it in a deployment scenario, it was unable to get a site reference. (I have a class wrapped around the request to SPConext.Current that allows one mechanism to obtain a site reference whether running in development mode against &lt;a href="http://localhost"&gt;http://localhost&lt;/a&gt; or in deployment mode against a site. It also handles dispose when necessary.) &lt;p&gt;It took too long to figure out what was happening, but apparently what was happening is that the handler got fired asynchronously and the SPContext could not obtain a reference to the current site. In this case my class tells it to go after the root site &lt;a href="http://localhost"&gt;http://localhost&lt;/a&gt;, which on my deployment site didn't exist either.  &lt;p&gt;I changed the class back to use IHttpHandler and it started working immediately. There must be some special way to use IHttpAsyncHandler and still be able to use SPContext.Current. I suspect it is possible to get a site reference through a specified URL, but that wouldn't work in my case. I'd prefer to use the async call, but in this case I can't seem to. Perhaps it would be possible to pass in the current site context as a parameter in the BeginProcessRequest... &lt;p&gt;This is one of those back burner projects to figure out...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Trouble+using+SPContext.Current+in+an+IHttpAsyncHandler+based+http+handler%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!246.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!246.entry</guid><pubDate>Wed, 05 Mar 2008 18:26:43 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!246/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!246.entry#comment</wfw:comment><dcterms:modified>2008-03-05T18:26:43Z</dcterms:modified></item><item><title>Internet Explorer Developer Toolbar not working?</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!244.entry</link><description>&lt;p&gt;I had a problem today trying to get the Internet Explorer Developer Toolbar working in my virtual PC. I could get the toolbar button to appear in the toolbar, but clicking on it did nothing. I did the usual search and tried a few things related to other plug-ins, but couldn't get it working. A co-worker pointed me in the right direction: The &lt;strong&gt;Internet Explorer Enhanced Security Configuration&lt;/strong&gt; &lt;p&gt;&lt;a href="http://blufiles.storage.msn.com/y1p21JEO8fd6a4DxDVDsL5EmbZRKPVfuBTRh7-e6BiLZEMpDUW-aglKFN99X2ePm5q22gPeprOVeCQ?PARTNER=WRITER"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=389 alt="clip_image002" src="http://blufiles.storage.msn.com/y1p21JEO8fd6a7x5LgxTib0MT_dal4C6vcTeLeD0pKPY2An_AU-gnuiyGVwJMh9RvKNlT4pzdJqypI?PARTNER=WRITER" width=478 border=0&gt;&lt;/a&gt; &lt;p&gt;Un-checking this option and restarting IE got the toolbar working.  &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Internet+Explorer+Developer+Toolbar+not+working%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!244.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!244.entry</guid><pubDate>Mon, 03 Mar 2008 19:34:33 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!244/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!244.entry#comment</wfw:comment><dcterms:modified>2008-03-03T19:35:17Z</dcterms:modified></item><item><title>Going back in time - Converting a VS2008 csproj to VS2005</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!241.entry</link><description>&lt;p&gt;I had the need to migrate an Ajax project created in VS2008 consisting of several class libraries back into a larger project created and built with VS2005. I'm not ready to convert that project into VS2008 just yet. &lt;p&gt;I preferred to just convert the csproj files back to VS2005 format and add them to the existing VS2005 project. I discovered a few easy steps that can allow you to do this. Note: I had already converted (most) of the project files to use .NET 2.0. If you are using Ajax extensions you will have to make your web.config align with this as well. Do this first in VS2008. Obviously if you are using any .NET 3.0 or .NET 3.5 features, this isn't going to work for you... &lt;p&gt;Next open the csproj file you want to change in Notepad. &lt;p&gt;Near the top is the Project node. If this contains ToolsVersion=&amp;quot;3.5&amp;quot; remove this attribute: &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&lt;strong&gt;&amp;lt;Project ToolsVersion=&amp;quot;3.5&amp;quot; DefaultTargets=...&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;becomes &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&lt;strong&gt;&amp;lt;Project DefaultTargets=...&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;A few lines down there is a &amp;lt;ProductVersion&amp;gt; node, change the value: &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&lt;strong&gt;&amp;lt;ProductVersion&amp;gt;9.0.21022&amp;lt;/ProductVersion&amp;gt;&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;becomes &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&lt;strong&gt;&amp;lt;ProductVersion&amp;gt;8.0.50727&amp;lt;/ProductVersion&amp;gt;&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;Near the bottom of the file, look for the &amp;lt;Import node, if it says MSBuildToolsPath, change &amp;quot;Tools&amp;quot; to &amp;quot;Bin&amp;quot; it: &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&lt;strong&gt;&amp;lt;Import Project=&amp;quot;$(MSBuildToolsPath)\Microsoft.CSharp.targets&amp;quot; /&amp;gt;&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;becomes &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&lt;strong&gt;&amp;lt;Import Project=&amp;quot;$(MSBuildBinPath)\Microsoft.CSharp.targets&amp;quot; /&amp;gt;&lt;/strong&gt;&lt;/font&gt; &lt;p&gt;If there is another &amp;lt;Import node with an MSBuildExtensionsPath, delete this entire line. &lt;p&gt;Save the file and you should then be able to to open the file in VS2005. Don't double click on the file if you have both versions of Visual Studio installed, you will likely get the default VS2008 to load it.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Going+back+in+time+-+Converting+a+VS2008+csproj+to+VS2005&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!241.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!241.entry</guid><pubDate>Tue, 26 Feb 2008 16:01:28 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!241/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!241.entry#comment</wfw:comment><dcterms:modified>2008-02-26T16:01:28Z</dcterms:modified></item><item><title>Weird asmx web service assembly requirement in SharePoint</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!240.entry</link><description>&lt;p&gt;I was hit buy this problem again today and after going down the wrong road for too long, I (re)discovered the simple solution. I really don't understand why this is necessary but, when creating an asmx web service that lives under the _Layouts folder (a custom application page really), it is necessary to add an @assembly reference to the .asmx file. This isn't necessary when running in development or under plain old IIS. Note the .asmx sample file below: &lt;p&gt;&lt;font face="Courier New" color="#008000" size=2&gt;&amp;lt;%@ WebService Language=&amp;quot;C#&amp;quot; CodeBehind=&amp;quot;EDVInfo.asmx.cs&amp;quot; Class=&amp;quot;MyApp.EDVInfo&amp;quot; %&amp;gt;&lt;/font&gt;  &lt;p&gt;This generates the following SharePoint error when you try to access the web service definition page: &lt;blockquote&gt; &lt;p&gt;&lt;font color="#0000ff" size=1&gt;Could not create type 'MyApp.EDVInfo'.   at System.Web.UI.SimpleWebHandlerParser.GetType(String typeName) &lt;br&gt;   at System.Web.UI.SimpleWebHandlerParser.GetTypeToCache(Assembly builtAssembly) &lt;br&gt;   at System.Web.Compilation.SimpleHandlerBuildProvider.GetGeneratedType(CompilerResults results) &lt;br&gt;   at System.Web.Compilation.BuildProvider.CreateBuildResult(CompilerResults results) &lt;br&gt;   at System.Web.Compilation.BuildProvider.GetBuildResult(CompilerResults results) &lt;br&gt;   at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) &lt;br&gt;   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) &lt;br&gt;   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) &lt;br&gt;   at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath) &lt;br&gt;   at System.Web.UI.WebServiceParser.GetCompiledType(String inputFile, HttpContext context) &lt;br&gt;   at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) &lt;br&gt;   at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated) &lt;br&gt;   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) &lt;br&gt;   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() &lt;br&gt;   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp;amp; completedSynchronously)&lt;/font&gt; &lt;/blockquote&gt; &lt;p&gt;Adding one line, a reference to the assembly allows the web service to load the asmx and allow it to function. See the addition of the assembly name below: &lt;p&gt;&lt;font face="Courier New" color="#008000" size=2&gt;&amp;lt;%@ Assembly Name=&amp;quot;MyApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0000000000000000&amp;quot; %&amp;gt;  &lt;br&gt;&amp;lt;%@ WebService Language=&amp;quot;C#&amp;quot; CodeBehind=&amp;quot;EDVInfo.asmx.cs&amp;quot; Class=&amp;quot;MyApp.EDVInfo&amp;quot; %&amp;gt; &lt;/font&gt; &lt;p&gt;I came across this trying to get an Ajax 1.0 project running in SharePoint. After tracing the traffic with Fiddler, I could see the asmx/jsdebug calls were failing. returning the same error above. It took me a while to recall this was a standard web service assembly resolution error and not something unique to my Ajax installation on SharePoint. This applies to http handlers as well (.ashx)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Weird+asmx+web+service+assembly+requirement+in+SharePoint&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!240.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!240.entry</guid><pubDate>Wed, 13 Feb 2008 03:14:28 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!240/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!240.entry#comment</wfw:comment><dcterms:modified>2008-02-13T03:14:28Z</dcterms:modified></item><item><title>Sliced bread is now obsolete</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!238.entry</link><description>&lt;p&gt;Ted Pattison and friends have made an awesome utility available for free on codeplex.com. Not only does it make the creation of SharePoint development projects extremely easy, it encapsulates the best practices for organizing development projects related to SharePoint, provides shortcuts for common development and deployment activities and more. &lt;p&gt;I wish I had this utility a year ago!  Visit the codeplex project here: &lt;a title="http://www.codeplex.com/stsdev" href="http://www.codeplex.com/stsdev"&gt;http://www.codeplex.com/stsdev&lt;/a&gt;  &lt;p&gt;Be sure to watch the screencasts on the releases page to get you up and running.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Sliced+bread+is+now+obsolete&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!238.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!238.entry</guid><pubDate>Fri, 01 Feb 2008 18:18:44 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!238/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!238.entry#comment</wfw:comment><dcterms:modified>2008-02-01T18:18:44Z</dcterms:modified></item><item><title>Javascript using DOM element property hasChildNodes</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!234.entry</link><description>&lt;p&gt;Here's one that surprised me this morning.  I was using this syntax a few times attempting to prevent entering a block if the div has no children: &lt;p&gt;&lt;font face="Courier New" color="#ff0000"&gt;// incorrect&lt;br&gt;i&lt;/font&gt;&lt;font face="Courier New" color="#ff0000"&gt;f(this.mydiv.hasChildNodes)&lt;br&gt;{&lt;br&gt;       // do something&lt;br&gt;}&lt;/font&gt;  &lt;p&gt;While debugging I discovered that if you use hasChildNodes without the parentheses, you actually get the function returned, not the boolean value you were expecting, which ends up being evaluated as true, entering the block you did not want to enter. Below is the correct syntax: &lt;p&gt;&lt;font face="Courier New" color="#008000"&gt;// correct&lt;br&gt;if(this.mydiv.hasChildNodes())&lt;br&gt;{&lt;br&gt;       // do something&lt;br&gt;}&lt;/font&gt;  &lt;p&gt;The more I use Javascript object notation the more it feels like C# and you tend to forget you are not working in type-safe world... I noticed the MS Ajax library has some method to perform type checks on your own function parameters but I miss having it happen everywhere... Lesson learned.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Javascript+using+DOM+element+property+hasChildNodes&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!234.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!234.entry</guid><pubDate>Fri, 18 Jan 2008 16:16:31 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!234/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!234.entry#comment</wfw:comment><dcterms:modified>2008-01-18T16:16:31Z</dcterms:modified></item><item><title>My 3 Favorite Web Dev Tools</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!233.entry</link><description>&lt;p&gt;I've been doing quite a bit of Ajax and Web UI work the past few weeks and the following tools have proved invaluable. &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;1. Visual Studio 2008&lt;/font&gt;&lt;/strong&gt; &lt;p&gt;If you are doing anything with JavaScript, stop everything and install this. This is the development environment to be using for this work. The new debugging features, intellisense and built in Ajax toolkit are tremendously helpful. &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;2. Fiddler&lt;/font&gt;&lt;/strong&gt; &lt;p&gt;If you ever need to inspect what is crossing the wire, you need fiddler. It will expose everything you need to know about your browser/server communication. See one of my prior posts if you need to watch localhost traffic. &lt;a href="http://www.fiddlertool.com"&gt;www.fiddlertool.com&lt;/a&gt;.  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;3. Internet Explorer Development Toolbar&lt;/font&gt;&lt;/strong&gt; &lt;p&gt;I didn't even know about this until 2 days ago when a co-worker suggested it. We were looking for some kind of tool to inspect the browser DOM as it existed in real time (as opposed to view source.)  I wish I had found this a couple years ago, it would have saved me from many &amp;quot;alert&amp;quot; iterations to figure out what was happening in the DOM. &lt;blockquote&gt; &lt;p&gt;Download:&lt;br&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en&lt;/a&gt; &lt;p&gt;Step by step getting started with it:&lt;br&gt;&lt;a href="http://www.15seconds.com/issue/070208.htm"&gt;http://www.15seconds.com/issue/070208.htm&lt;/a&gt;&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+My+3+Favorite+Web+Dev+Tools&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!233.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!233.entry</guid><pubDate>Wed, 16 Jan 2008 18:53:52 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!233/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!233.entry#comment</wfw:comment><dcterms:modified>2008-01-16T18:53:52Z</dcterms:modified></item><item><title>Fiddler / localhost / Vista</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!232.entry</link><description>&lt;p&gt;Here's an update on the prior fiddler tip if you are using Vista.  I couldn't get Fiddler to capture my localhost traffic, even with the period trick on my Vista notebook. Uncheck the IPv6 option in Fiddler and it will work. Below is the link to the site with the answer: &lt;p&gt;&lt;a title="http://groups.msn.com/HTTPFiddler/bugs.msnw?action=get_message&amp;amp;mview=0&amp;amp;ID_Message=815&amp;amp;LastModified=4675632312984197215" href="http://groups.msn.com/HTTPFiddler/bugs.msnw?action=get_message&amp;amp;mview=0&amp;amp;ID_Message=815&amp;amp;LastModified=4675632312984197215"&gt;http://groups.msn.com/HTTPFiddler/bugs.msnw?action=get_message&amp;amp;mview=0&amp;amp;ID_Message=815&amp;amp;LastModified=4675632312984197215&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Fiddler+%2f+localhost+%2f+Vista&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!232.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!232.entry</guid><pubDate>Tue, 08 Jan 2008 17:10:17 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!232/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!232.entry#comment</wfw:comment><dcterms:modified>2008-01-08T17:10:46Z</dcterms:modified></item><item><title>Using Fiddler on localhost</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!231.entry</link><description>&lt;p&gt;&lt;font color="#ff0000" size=3&gt;&lt;strong&gt;&lt;br&gt;Happy New Year!&lt;/strong&gt;&lt;/font&gt;   &lt;p&gt;I've taken a short break from hard-core SharePoint over the holidays and have been experimenting with the Microsoft AJAX Library recently, particularly the Scripting library and Scripting Services - pretty cool stuff. &lt;p&gt;I had a need to watch some of the traffic from my test page so naturally I turned to Fiddler (&lt;a href="http://www.fiddlertool.com"&gt;www.fiddlertool.com&lt;/a&gt;) but noticed it didn't show traffic from the local ASP.NET Development Server on localhost:portnumber.  A quick Google found a couple tips: &lt;ul&gt; &lt;li&gt;The most useful for me was to use &lt;a href="http://localhost.:portnumber"&gt;http://localhost.:portnumber&lt;/a&gt;. Notice the period following localhost. &lt;li&gt;You can also use your computer name in place of localhost, but I think this would only work if you were not using the ASP.NET development server and were using IIS directly.&lt;/ul&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Using+Fiddler+on+localhost&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!231.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!231.entry</guid><pubDate>Fri, 04 Jan 2008 14:17:44 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!231/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!231.entry#comment</wfw:comment><dcterms:modified>2008-01-04T14:17:44Z</dcterms:modified></item><item><title>Updated Best Practice Documents</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!229.entry</link><description>&lt;p&gt;The documentation on MSDN has been recently updated with some significant new documentation.  &lt;p&gt;&lt;a title="http://blogs.msdn.com/sharepointdeveloperdocs/archive/2007/12/11/SharePointSDKsLiveForSP1.aspx" href="http://blogs.msdn.com/sharepointdeveloperdocs/archive/2007/12/11/SharePointSDKsLiveForSP1.aspx"&gt;http://blogs.msdn.com/sharepointdeveloperdocs/archive/2007/12/11/SharePointSDKsLiveForSP1.aspx&lt;/a&gt; &lt;p&gt;One area with new material is some of the best practices documents, especially dealing with disposing of the Site and Web objects. I discovered I was not handling disposal correctly in one instance that required a page redirection. (Thanks to Andrew Connell for directing me to this &lt;a title="http://andrewconnell.com/blog/archive/2007/12/15/Both-SharePoint-v3-WSS-v3-and-MOSS-2007-SDKs-have.aspx" href="http://andrewconnell.com/blog/archive/2007/12/15/Both-SharePoint-v3-WSS-v3-and-MOSS-2007-SDKs-have.aspx"&gt;http://andrewconnell.com/blog/archive/2007/12/15/Both-SharePoint-v3-WSS-v3-and-MOSS-2007-SDKs-have.aspx&lt;/a&gt;) &lt;p&gt;There have been other areas updated, including some new documentation (finally) on the external storage mechanism (EBS) available in SharePoint. (Which sounds quite challenging to implement successfully) &lt;p&gt;&lt;strong&gt;External Storing of Binary Large Objects (BLOBs) in Windows SharePoint Services&lt;/strong&gt;&lt;br&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/bb802976.aspx" href="http://msdn2.microsoft.com/en-us/library/bb802976.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb802976.aspx&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Updated+Best+Practice+Documents&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!229.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!229.entry</guid><pubDate>Sun, 16 Dec 2007 13:38:21 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!229/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!229.entry#comment</wfw:comment><dcterms:modified>2007-12-16T13:38:21Z</dcterms:modified></item><item><title>SPQuery with non text fields (Boolean and DateTime)</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!226.entry</link><description>&lt;p&gt;This isn't anything really new or unique but seemed worth bloging to have it one in place. &lt;p&gt;If you want to query on a non-text field such as a Yes/No field (boolean) your query CAML might look like the following: &lt;p&gt;&lt;font face="Courier New"&gt;StringBuilder sbQuery = new StringBuilder();&lt;br&gt;sbQuery.Append(@&amp;quot;&amp;lt;Where&amp;gt;&amp;quot;);&lt;br&gt;sbQuery.Append(@&amp;quot;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='&amp;quot; + STR_ISLOGGEDON + @&amp;quot;' /&amp;gt;&amp;lt;Value Type='Boolean'&amp;gt;1&amp;lt;/Value&amp;gt;&amp;quot;);&lt;br&gt;sbQuery.Append(@&amp;quot;&amp;lt;/Eq&amp;gt;&amp;quot;);&lt;br&gt;sbQuery.Append(@&amp;quot;&amp;lt;/Where&amp;gt;&amp;quot;);&lt;br&gt;SPQuery query = new SPQuery();&lt;br&gt;query.Query = sbQuery.ToString(); &lt;/font&gt; &lt;p&gt;&lt;font face=v&gt;Note the value for the boolean expressed as text. 1 for true, 0 for false.&lt;/font&gt; &lt;p&gt;&lt;font face=v&gt;I had a need to query on a DateTime field and locate records that had been updated in the last 15 minutes. It appears the query will not operate using the time portion of the DateTime. It only appears to compare the Date portion. I ended up removing the DateTime from the query and checking each row of the result. It turned out to be ok because I had to access each row anyway and either clear a field or perform some process on the row depending on whether the time stamp was inside a 15 minute window.&lt;/font&gt; &lt;p&gt;Here's a link that discusses using DateTime in a CAML query if you go that route: &lt;p&gt;&lt;a title="http://net.bloggix.com/PermaLink,guid,d273feb7-bc14-460d-85e1-863cb6db6016.aspx" href="http://net.bloggix.com/PermaLink,guid,d273feb7-bc14-460d-85e1-863cb6db6016.aspx"&gt;http://net.bloggix.com/PermaLink,guid,d273feb7-bc14-460d-85e1-863cb6db6016.aspx&lt;/a&gt; &lt;p&gt;&lt;font face=v&gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+SPQuery+with+non+text+fields+(Boolean+and+DateTime)&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!226.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!226.entry</guid><pubDate>Mon, 12 Nov 2007 17:01:20 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!226/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!226.entry#comment</wfw:comment><dcterms:modified>2007-11-12T17:01:20Z</dcterms:modified></item><item><title>docSTAR Eclipse Released</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!221.entry</link><description>&lt;p&gt;This has been my daily life for the past 6-9 months or more...  We finally wrapped up and release our first version of docSTAR Eclipse, our newest document imaging/document management offering built upon SharePoint. You can read more about it here:  &lt;p&gt;&amp;lt;commercial&amp;gt;&lt;br&gt;&lt;br&gt;&lt;a title="http://www.docstar.com/docstar/eclipse" href="http://www.docstar.com/docstar/eclipse"&gt;http://www.docstar.com/docstar/eclipse&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://blu1.storage.msn.com/y1pl1a6q7pLf9baE7ofgNt_OCsRwOlmu503O7NzSfpIGoRNODyalmHHRQYgCF2R88jEak-Duv90FrZHr4rrRAEJu9cKOx5UullJ"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=518 alt=eclipse src="http://blu1.storage.msn.com/y1pl1a6q7pLf9ZOTVvgna26a-Q5uDOafBdWqHlsxrVXOVYlTKGgMiUJlUd8oTnQBIdIuBZb8ECmmWPYEQVlOzVk1TKy1YOG3jW7" width=689 border=0&gt;&lt;/a&gt; &lt;br&gt;&amp;lt;/commercial&amp;gt; &lt;p&gt;It has been an interesting ride going from 0-60 on SharePoint about a year ago and then staying in the passing lane with the pedal to the floor. Our small team has learned a lot about SharePoint during that time and I've shared some of the &amp;quot;challenges&amp;quot; here and at local gatherings. Thanks to all who have offered suggestions and encouragement along the way.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+docSTAR+Eclipse+Released&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!221.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!221.entry</guid><pubDate>Fri, 26 Oct 2007 13:40:15 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!221/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!221.entry#comment</wfw:comment><dcterms:modified>2007-10-26T13:42:32Z</dcterms:modified></item><item><title>FullTextSQLQuery - Keyword search of just documents on one site</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!220.entry</link><description>&lt;p&gt;I was researching a problem with our search mechanism, which would not return results for certain keywords. It ended up that the number of results being returned for all sites was hitting the RowLimit before the result I wanted appeared. I needed some better filtering. Along the way I discovered a couple tips, one of which appears to be undocumented, to help restrict a search to only documents in a library and only on a given site collection. (I'm also using forms authentication.) &lt;p&gt;I created the test.aspx page (shown below) to diagnose a search problem and to experiment with search results on a live server without having to build/deploy. Just place it under C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS (or inside another sub folder.) &lt;p&gt;Note the &lt;strong&gt;IsDocument=1&lt;/strong&gt; in the query text. This will restrict this search to only return documents in the results, not the other pages that get indexed, such as: &lt;a href="http://xx.xx.xx.xx/My"&gt;&lt;font color="#000000"&gt;http://xx.xx.xx.xx/My&lt;/font&gt;&lt;/a&gt;&lt;font color="#000000"&gt; Documents/Forms/DispForm.aspx?ID=29&lt;/font&gt; &lt;p&gt;You can also filter the results to just the site you are currently searching (assuming you want to). If the current user has rights to other sites, those results would be returned as well unless you include the &lt;strong&gt;SITE=&lt;/strong&gt; clause.  &lt;p&gt;SearchTest.aspx:  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt; &lt;br&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint&amp;quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint.Search&amp;quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint.Search.Query&amp;quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;SharePoint&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt; &lt;br&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;Utilities&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Utilities&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt; &lt;br&gt;&amp;lt;%@ Register Tagprefix=&amp;quot;Search&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Search&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;/font&gt;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;gt;&lt;br&gt;&amp;lt;html xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt; &amp;gt;&lt;br&gt;&amp;lt;head&amp;gt;&lt;br&gt;    &amp;lt;title&amp;gt;Search Test&amp;lt;/title&amp;gt;&lt;br&gt;&amp;lt;/head&amp;gt;&lt;br&gt;&amp;lt;body&amp;gt;&lt;br&gt;&amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;div&amp;gt;&lt;br&gt;    &amp;lt;asp:TextBox ID=&amp;quot;TextBox1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;br&gt;    &amp;lt;asp:Button ID=&amp;quot;Button1&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Search&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;%&lt;br&gt;    if (!HttpContext.Current.User.Identity.IsAuthenticated)&lt;br&gt;    {&lt;br&gt;        Response.Write(&amp;quot;&amp;lt;br /&amp;gt;Please login.&amp;lt;br /&amp;gt;&amp;quot;);&lt;br&gt;    }&lt;br&gt;    else&lt;br&gt;    {&lt;br&gt;    if (this.IsPostBack)&lt;br&gt;    {&lt;br&gt;        string keywords = this.TextBox1.Text; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        SPSite sitecol = SPContext.Current.Site;&lt;br&gt;        SPWeb site = SPContext.Current.Web; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        // create a new full text query &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        FullTextSqlQuery ftQuery = new FullTextSqlQuery(sitecol);&lt;br&gt;        ftQuery.QueryText = @&amp;quot;SELECT Path FROM Scope() WHERE FREETEXT(*, '&amp;quot; + keywords + &amp;quot;') AND IsDocument=1 AND SITE='&amp;quot; + site.Url.ToString() + &amp;quot;'&amp;quot;; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        ftQuery.ResultTypes |= ResultType.RelevantResults;&lt;br&gt;        ftQuery.Hint = QueryHint.OptimizeWithFullTextIndex;&lt;br&gt;        ftQuery.KeywordInclusion = KeywordInclusion.AllKeywords;&lt;br&gt;        ftQuery.SiteContext = new Uri(site.Url.ToString());&lt;br&gt;        ftQuery.RowLimit = 100;&lt;br&gt;        ftQuery.TrimDuplicates = true;&lt;br&gt;        ftQuery.AuthenticationType = QueryAuthenticationType.PluggableAuthenticatedQuery; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        ResultTableCollection resultTables = ftQuery.Execute();&lt;br&gt;        ResultTable resultTable = resultTables[ResultType.RelevantResults]; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        Response.Write(&amp;quot;&amp;lt;br /&amp;gt;&amp;quot; + &amp;quot;Site Collection: &amp;quot; + sitecol.Url.ToString() + &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br&gt;        Response.Write(&amp;quot;Site: &amp;quot; + site.Url.ToString() + &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br&gt;        Response.Write(&amp;quot;Search Keyword: &amp;quot; + keywords + &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br&gt;        Response.Write(&amp;quot;Search Results:&amp;quot; + &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;); &lt;/font&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;   int count = 0; &lt;/font&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;        while (true == resultTable.Read())&lt;br&gt;        {&lt;br&gt;            if (resultTable.FieldCount &amp;gt; 0)&lt;br&gt;            {&lt;br&gt;                string columnName = resultTable.GetName(0);&lt;br&gt;                Object columnValue = resultTable.GetValue(0); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;                Response.Write(columnValue.ToString() + &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;);&lt;br&gt;                count++;&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;        Response.Write(count.ToString() + &amp;quot; results.&amp;lt;br /&amp;gt;&amp;quot;); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;    }&lt;br&gt;    else&lt;br&gt;    {&lt;br&gt;        this.TextBox1.Text = &amp;quot;Imported&amp;quot;;&lt;br&gt;    }&lt;br&gt;    } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt; %&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;&amp;lt;/form&amp;gt;&lt;br&gt;&amp;lt;/body&amp;gt;&lt;br&gt;&amp;lt;/html&amp;gt;&lt;/font&gt;  &lt;p&gt;The IsDocument=1 tip (which does not appear in the WSS SDK documentation) comes from this question: &lt;p&gt;&lt;a title="http://www.developermania.com/newsgroups/item/316475/FullTextSqlQuery_contains_problem.aspx" href="http://www.developermania.com/newsgroups/item/316475/FullTextSqlQuery_contains_problem.aspx"&gt;http://www.developermania.com/newsgroups/item/316475/FullTextSqlQuery_contains_problem.aspx&lt;/a&gt; &lt;p&gt;I don't recall where I saw the SITE= being used (sorry.)&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+FullTextSQLQuery+-+Keyword+search+of+just+documents+on+one+site&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!220.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!220.entry</guid><pubDate>Fri, 26 Oct 2007 13:34:53 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!220/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!220.entry#comment</wfw:comment><dcterms:modified>2007-10-26T13:34:53Z</dcterms:modified></item><item><title>WSS 3.0 Search Capabilities - Out of the box</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!198.entry</link><description>&lt;p&gt;It has been hard to find information that really describes what does and what does not get indexed, for WSS 3.0. I created the following table from experimentation.  The Title and other fields refers to the document name, for example &amp;quot;mydoc.doc&amp;quot;, as well as other site columns added to a content type. I didn't test columns added directly to a list, but I'm assuming they would work the same as site columns.  &lt;table cellspacing=0 cellpadding=2 width=607 border=1&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=top width=184&gt;&lt;b&gt;Document Type&lt;/b&gt; &lt;td valign=top width=106&gt;&lt;b&gt;Extension&lt;/b&gt; &lt;td valign=top width=169&gt;&lt;b&gt;Title &amp;amp; other fields Indexed&lt;/b&gt; &lt;td valign=top width=146&gt;&lt;b&gt;File content indexed&lt;/b&gt; &lt;tr&gt; &lt;td valign=top width=184&gt; &lt;p&gt;Microsoft Word &lt;td valign=top width=106&gt;.doc, .docx &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;Yes &lt;tr&gt; &lt;td valign=top width=184&gt;Microsoft Excel  &lt;td valign=top width=106&gt;.xls, .xlsx &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;Yes &lt;tr&gt; &lt;td valign=top width=184&gt;Microsoft PowerPoint  &lt;td valign=top width=106&gt; &lt;p&gt;.ppt, .pptx &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;Yes &lt;tr&gt; &lt;td valign=top width=184&gt;Microsoft Output Message  &lt;td valign=top width=106&gt;.msg &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;tr&gt; &lt;td valign=top width=184&gt;Text  &lt;td valign=top width=106&gt;.txt &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;Yes &lt;tr&gt; &lt;td valign=top width=184&gt;HTML  &lt;td valign=top width=106&gt;.html &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;Yes &lt;tr&gt; &lt;td valign=top width=184&gt;JPEG (Image) &lt;td valign=top width=106&gt;.jpg &lt;td valign=top width=169&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;td valign=top width=146&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;tr&gt; &lt;td valign=top width=184&gt;Bitmap (Image) &lt;td valign=top width=106&gt;.bmp &lt;td valign=top width=169&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;td valign=top width=146&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;tr&gt; &lt;td valign=top width=184&gt;TIF (Image) &lt;td valign=top width=106&gt; &lt;p&gt;.tif &lt;td valign=top width=169&gt;Yes &lt;td valign=top width=146&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;tr&gt; &lt;td valign=top width=184&gt;PDF  &lt;td valign=top width=106&gt;.pdf &lt;td valign=top width=169&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt; &lt;td valign=top width=147&gt;&lt;font color="#ff0000"&gt;No&lt;/font&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;The following Wrox book excerpt has some background information regarding search:&lt;br&gt;&lt;a title="http://www.wrox.com/WileyCDA/Section/id-305250.html" href="http://www.wrox.com/WileyCDA/Section/id-305250.html"&gt;http://www.wrox.com/WileyCDA/Section/id-305250.html&lt;/a&gt; &lt;p&gt;This chart refers only to out of the box capabilities. It is possible to install and configure other IFilters, for example to index PDF. For more info on IFilters see &lt;a href="http://www.ifilter.org"&gt;www.ifilter.org&lt;/a&gt; or &lt;a title="http://www.ifiltershop.com" href="http://www.ifiltershop.com"&gt;www.ifiltershop.com&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+WSS+3.0+Search+Capabilities+-+Out+of+the+box&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!198.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!198.entry</guid><pubDate>Fri, 21 Sep 2007 12:42:21 GMT</pubDate><slash:comments>11</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!198/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!198.entry#comment</wfw:comment><dcterms:modified>2007-09-21T13:50:43Z</dcterms:modified></item><item><title>Fusion Log Viewer</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!188.entry</link><description>&lt;p&gt;I came across an interesting utility while trying to debug a custom login page issue today. I am trying to have a custom login page that is used when my site is hit using forms authentication and multiple sites, for example &lt;a href="http://vpc1/sites/site1/_layouts/myapp/main.aspx"&gt;http://vpc1/sites/site1/_layouts/myapp/main.aspx&lt;/a&gt;  &lt;p&gt;The web.config in my .../layouts/myapp points to my login page, but it doesn't appear to be used, when I load my I get only the SharePoint login page. At this point I'm thinking something isn't loading in my page, which is failing back to use SharePoint's login page.  &lt;p&gt;The fuslogvw.exe shows the binding work that goes on when IIS loads your page, resolves assemblies, etc. This page has some great information and links: &lt;p&gt;&lt;a title="http://www.developerfusion.co.uk/show/6753/" href="http://www.developerfusion.co.uk/show/6753/"&gt;http://www.developerfusion.co.uk/show/6753/&lt;/a&gt; &lt;p&gt;Here's an example of the log utility in use. It's showing me that SharePoint is loading and using its own login.aspx and not mine: &lt;p&gt;&lt;a href="http://blu1.storage.msn.com/y1pl1a6q7pLf9ajyXWBueBLH8fRuJjn_IWfJxlzdr7T7ZR6nd8IPGHMOdSfgsNm_X7Nr28Mg0AEmtgKtzsKWlxw0Sryo0mpbLVy"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=336 alt=image src="http://blu1.storage.msn.com/y1pl1a6q7pLf9a3nXV-krGvh0kbYzp8XTRvGoi3Kehq2LQa76yqcIImgxjHWunZQUZZ-TgDLpOPw7aplAbVz2gLCJa_ycFNcoVF" width=681 border=0&gt;&lt;/a&gt;  &lt;p&gt;&lt;font face="Courier New" size=2&gt;*** Assembly Binder Log Entry  (8/24/2007 @ 9:38:38 AM) *** &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;The operation was successful.&lt;br&gt;Bind result: hr = 0x0. The operation completed successfully. &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll&lt;br&gt;Running under executable  c:\windows\system32\inetsrv\w3wp.exe&lt;br&gt;--- A detailed error log follows. &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;=== Pre-bind state information ===&lt;br&gt;LOG: User = NT AUTHORITY\NETWORK SERVICE&lt;br&gt;LOG: DisplayName = App_Web_login.aspx.2a428413.ttfbe_56&lt;br&gt; (Partial)&lt;br&gt;LOG: Appbase = file:///C:/Inetpub/wwwroot/wss/VirtualDirectories/80/&lt;br&gt;LOG: Initial PrivatePath = C:\Inetpub\wwwroot\wss\VirtualDirectories\80\bin&lt;br&gt;LOG: Dynamic Base = C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\4c47f60c&lt;br&gt;LOG: Cache Base = C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\4c47f60c&lt;br&gt;LOG: AppName = 80ee9381&lt;br&gt;Calling assembly : (Unknown).&lt;br&gt;===&lt;br&gt;LOG: This bind starts in default load context.&lt;br&gt;LOG: Using application configuration file: C:\Inetpub\wwwroot\wss\VirtualDirectories\80\web.config&lt;br&gt;LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config&lt;br&gt;LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.&lt;br&gt;LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).&lt;br&gt;LOG: Attempting download of new URL file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/root/4c47f60c/80ee9381/App_Web_login.aspx.2a428413.ttfbe_56.DLL.&lt;br&gt;LOG: Assembly download was successful. Attempting setup of file: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\4c47f60c\80ee9381\App_Web_login.aspx.2a428413.ttfbe_56.dll&lt;br&gt;LOG: Entering run-from-source setup phase.&lt;br&gt;LOG: Assembly Name is: App_Web_login.aspx.2a428413.ttfbe_56, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null&lt;br&gt;LOG: A partially-specified assembly bind succeeded from the application directory. Need to re-apply policy.&lt;br&gt;LOG: Using application configuration file: C:\Inetpub\wwwroot\wss\VirtualDirectories\80\web.config&lt;br&gt;LOG: Using host configuration file: \\?\C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet.config&lt;br&gt;LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.&lt;br&gt;LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).&lt;br&gt;LOG: Binding succeeds. Returns assembly from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\4c47f60c\80ee9381\App_Web_login.aspx.2a428413.ttfbe_56.dll.&lt;br&gt;LOG: Assembly is loaded in default load context. &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Fusion+Log+Viewer&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!188.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!188.entry</guid><pubDate>Fri, 24 Aug 2007 14:26:35 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!188/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!188.entry#comment</wfw:comment><dcterms:modified>2007-08-24T14:26:35Z</dcterms:modified></item><item><title>List item event handler: ItemDeleted - Is it useless?</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!181.entry</link><description>&lt;p&gt;I'm not sure what the ItemDeleted event handler is useful for. It doesn't appear that you can get any useful information from the properties object, such as identifying about the item that was deleted. I had a need to perform some cleanup on a separate list when a document was deleted from a library, however I was unable to find any way to identify the document that was just deleted inside this event.  &lt;p&gt;The ListItem property of the properties was null. There is a ListItemID, but this appears to point to the item that was just deleted. In fact, the ListItem property does a GetItemById lookup (under the hood) on the ListItemId. And guess what, the item isn't found because it was deleted. &lt;p&gt;I wanted to get the ListItem that was deleted, or at least it's UniqueId so I could perform some cleanup but I ended up doing the cleanup in the ItemDeleting event instead. This is potentially problematic because some other handler could be added and it could perform a cancel in the ItemDeleting event, avoiding the deletion on the item.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+List+item+event+handler%3a+ItemDeleted+-+Is+it+useless%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!181.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!181.entry</guid><pubDate>Thu, 09 Aug 2007 23:42:44 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!181/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!181.entry#comment</wfw:comment><dcterms:modified>2007-08-09T23:42:44Z</dcterms:modified></item><item><title>Debugging Feature Receiver Event Handler</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!180.entry</link><description>&lt;p&gt;I've got a feature that installs a couple event handlers on a document library. I'm catching ItemUpdated and added the ItemDeleted. I was trying to use the ListItem property of the properties object, and discovered you can't (see next blog entry). This was rather difficult to debug from inside an event handler. I tried writing to the event log, which worked but was cumbersome. Then I found I could use Trace.Write from the System.Diagnostics namespace and use a separate utility called DebugView to view these trace messages (see link below). &lt;p&gt;For example: &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=3&gt;using System.Diagnostics;&lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=3&gt;...&lt;/font&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=3&gt;Trace.Write(&lt;font color="#800000"&gt;&amp;quot;executing at point 1&amp;quot;&lt;/font&gt;);&lt;/font&gt; &lt;/blockquote&gt; &lt;p&gt;I would imagine it is also possible to somehow connect the debugger to the process running the event handler, but the trace command provided the information I needed and allowed me to get it working in short time. &lt;p&gt;&lt;a title="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx" href="http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx"&gt;&lt;font color="#444444"&gt;DebugView utility: &lt;/font&gt;http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx&lt;/a&gt; &lt;p&gt;--------------------------------------------------------------------------------------------------------------------------------------------------- &lt;p&gt;Unrelated but interesting: &lt;p&gt;During the above investigation, I looked at the Sharepoint logs and found this:&lt;br&gt;&lt;br&gt;An SPRequest object was not disposed before the end of this thread.  To avoid wasting system resources, dispose of this object or its parent (such as an SPSite or SPWeb) as soon as you are done using it.  This object will now be disposed.  Allocation Id: {E954991A-9A53-497E-AD81-5DBB930580EE}  To determine where this object was allocated, create a registry key at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\HeapSettings.  Then create a new DWORD named SPRequestStackTrace with the value 1 under this key.  &lt;p&gt;That's interesting, adding a key to the registry can provide more information about where leaks might be coming from. Hmmm...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Debugging+Feature+Receiver+Event+Handler&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!180.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!180.entry</guid><pubDate>Tue, 07 Aug 2007 13:13:08 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!180/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!180.entry#comment</wfw:comment><dcterms:modified>2007-08-07T13:13:08Z</dcterms:modified></item><item><title>Control The Crawl</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!174.entry</link><description>&lt;p&gt;Here's the answer to something I have been seeking for some time.  How can you trigger a full crawl on the search engine: &lt;p&gt;Start or stop a full crawl &lt;p&gt;To start a full crawl of the content, use the following syntax: &lt;p&gt;&lt;b&gt;Stsadm -o spsearch -action fullcrawlstart&lt;/b&gt; &lt;p&gt;To stop a full crawl of the content, use the following syntax: &lt;p&gt;&lt;b&gt;Stsadm -o spsearch -action fullcrawlstop&lt;/b&gt; &lt;p&gt;This is from the technet docs &lt;p&gt;&lt;a title="http://technet2.microsoft.com/windowsserver/WSS/en/library/bc15d0a8-b48f-4d32-a267-797f8515d1f31033.mspx?mfr=true" href="http://technet2.microsoft.com/windowsserver/WSS/en/library/bc15d0a8-b48f-4d32-a267-797f8515d1f31033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver/WSS/en/library/bc15d0a8-b48f-4d32-a267-797f8515d1f31033.mspx?mfr=true&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Control+The+Crawl&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!174.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!174.entry</guid><pubDate>Thu, 12 Jul 2007 01:39:47 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!174/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!174.entry#comment</wfw:comment><dcterms:modified>2007-07-12T01:39:47Z</dcterms:modified></item><item><title>Best Practices Follow-up</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!173.entry</link><description>&lt;p&gt;Here's a page with a good explanation of the need to dispose your site and web objects (when you open them) and a demonstration of the effects of not following this pattern. &lt;p&gt;&lt;a title="http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx" href="http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx"&gt;&lt;a title="http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx" href="http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx"&gt;&lt;/a&gt;&lt;a title="http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx" href="http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx"&gt;http://blogs.msdn.com/jannemattila/archive/2007/06/29/free-the-spweb.aspx&lt;/a&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Best+Practices+Follow-up&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!173.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!173.entry</guid><pubDate>Tue, 03 Jul 2007 17:43:09 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!173/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!173.entry#comment</wfw:comment><dcterms:modified>2007-07-03T17:43:09Z</dcterms:modified></item><item><title>Forms Authentication, SharePoint, and the Event Log</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!172.entry</link><description>&lt;p&gt;Here's an interesting issue, that makes sense once I finally figured out what was going on. &lt;p&gt;I'm using the Microsoft Enterprise Library to handle caching, logging and exception handling. (Was first using version 2.0 and over the course of this issue upgraded to 3.1) &lt;p&gt;Everything was working just fine in development but once moving to the test SharePoint virtual machine, I noticed that my event log entries were not appearing for any of the logging and exception handling. I have a special handler class created to display the error on the form to the user, and it was being called, but for some reason the Event Log entries we not being made.  I made the simple test page below to take the enterprise library out of the picture and just test the event auditing. &lt;p&gt;TEST.ASPX&lt;br&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;test.aspx.cs&amp;quot; Inherits=&amp;quot;_Default&amp;quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;SharePoint&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint&amp;quot; %&amp;gt; &lt;/font&gt; &lt;p&gt;TEST.ASPX.CS &lt;br&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;using System;&lt;br&gt;using System.Data;&lt;br&gt;using System.Configuration;&lt;br&gt;using System.Web;&lt;br&gt;using System.Web.Security;&lt;br&gt;using System.Web.UI;&lt;br&gt;using System.Web.UI.WebControls;&lt;br&gt;using System.Web.UI.WebControls.WebParts;&lt;br&gt;using System.Web.UI.HtmlControls;&lt;br&gt;using Microsoft.SharePoint; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;public partial class _Default : System.Web.UI.Page &lt;br&gt;{&lt;br&gt;    protected void Page_Load(object sender, EventArgs e)&lt;br&gt;    {&lt;br&gt;        LogIt();&lt;br&gt;    } &lt;/font&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New" size=2&gt;    private void LogIt()&lt;br&gt;   {&lt;br&gt;        System.Diagnostics.EventLog log = new System.Diagnostics.EventLog(&amp;quot;Application&amp;quot;, &amp;quot;.&amp;quot;, &amp;quot;Starburst&amp;quot;);&lt;br&gt;        log.WriteEntry(&amp;quot;Writing from test application&amp;quot;, System.Diagnostics.EventLogEntryType.Information, 42, 42);&lt;br&gt;    }&lt;br&gt;}&lt;/font&gt; &lt;/font&gt; &lt;p&gt;It turns out that the event log entries were being attempted using the forms authentication user I was logged into SharePoint with. In dev mode windows authentication was in effect. This page worked just fine under standard IIS, authenticated as the windows auto admin, but failed running under SharePoint as a forms user.  The odd thing was that there were no failed audit entries being made. (One of the first things I did was to turn on failure auditing, and maybe I missed something, but nothing was being audited.) &lt;p&gt;I tried using the RunWithElevatedPrivileges method to solve the problem, allowing SharePoint to use the Application Pool Identity (I think) to make the event log entries. &lt;p&gt;TEST.ASPX&lt;br&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;test.aspx.cs&amp;quot; Inherits=&amp;quot;_Default&amp;quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;SharePoint&amp;quot; Assembly=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint&amp;quot; %&amp;gt; &lt;/font&gt; &lt;p&gt; &lt;p&gt;TEST.ASPX.CS &lt;br&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;using System;&lt;br&gt;using System.Data;&lt;br&gt;using System.Configuration;&lt;br&gt;using System.Web;&lt;br&gt;using System.Web.Security;&lt;br&gt;using System.Web.UI;&lt;br&gt;using System.Web.UI.WebControls;&lt;br&gt;using System.Web.UI.WebControls.WebParts;&lt;br&gt;using System.Web.UI.HtmlControls;&lt;br&gt;using Microsoft.SharePoint; &lt;/font&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font size=2&gt;&lt;font face="Courier New"&gt;public partial class _Default : System.Web.UI.Page &lt;br&gt;{&lt;br&gt;    protected void Page_Load(object sender, EventArgs e)&lt;br&gt;    {&lt;br&gt;        SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(LogIt);&lt;br&gt;        SPSecurity.RunWithElevatedPrivileges(LogIt);&lt;br&gt;        }&lt;/font&gt;&lt;/font&gt; &lt;/font&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;private void LogIt()&lt;br&gt;   {&lt;br&gt;        System.Diagnostics.EventLog log = new System.Diagnostics.EventLog(&amp;quot;Application&amp;quot;, &amp;quot;.&amp;quot;, &amp;quot;Starburst&amp;quot;);&lt;br&gt;        log.WriteEntry(&amp;quot;Writing from test application&amp;quot;, System.Diagnostics.EventLogEntryType.Information, 42, 42);&lt;br&gt;    }&lt;br&gt;}&lt;/font&gt;  &lt;p&gt;It was also necessary to perform two changes to the registry: &lt;p&gt;1. Add to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\CustomSD key the following string: (A;;0x3;;;NS)  (You can find out what this means here &lt;a title="http://www.jameskovacs.com/blog/PermaLink.aspx?guid=cd6e5f6e-7107-48bc-8563-f5669706fcdc" href="http://www.jameskovacs.com/blog/PermaLink.aspx?guid=cd6e5f6e-7107-48bc-8563-f5669706fcdc"&gt;http://www.jameskovacs.com/blog/PermaLink.aspx?guid=cd6e5f6e-7107-48bc-8563-f5669706fcdc&lt;/a&gt;)2. Under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application, add a new key with the name of your application (Starburst in this example)&lt;br&gt; &lt;p&gt;I was then able to create a wrapper class to be used to call the enterprise library ExceptionPolicy class and all was well again. &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Forms+Authentication%2c+SharePoint%2c+and+the+Event+Log&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!172.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!172.entry</guid><pubDate>Tue, 19 Jun 2007 01:58:52 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!172/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!172.entry#comment</wfw:comment><dcterms:modified>2007-06-19T03:15:00Z</dcterms:modified></item><item><title>Forms Auth</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!171.entry</link><description>&lt;p&gt;Here's another great page with additional resources and links on Forms Authentication with SharePoint. &lt;p&gt;&lt;a title="http://worldwidevine.spaces.live.com/blog/cns!E448F9393446330E!316.entry" href="http://worldwidevine.spaces.live.com/blog/cns!E448F9393446330E!316.entry"&gt;http://worldwidevine.spaces.live.com/blog/cns!E448F9393446330E!316.entry&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Forms+Auth&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!171.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!171.entry</guid><pubDate>Thu, 14 Jun 2007 14:00:33 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!171/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!171.entry#comment</wfw:comment><dcterms:modified>2007-06-14T14:00:33Z</dcterms:modified></item><item><title>Forms Authentication with SharePoint</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!170.entry</link><description>&lt;p&gt;If you are configuring SharePoint for forms authentication, Andrew Connell has a great step by step article on it here:&lt;br&gt;&lt;a title="http://www.andrewconnell.com/blog/articles/HowToConfigPublishingSiteWithDualAuthProvidersAndAnonAccess.aspx" href="http://www.andrewconnell.com/blog/articles/HowToConfigPublishingSiteWithDualAuthProvidersAndAnonAccess.aspx"&gt;http://www.andrewconnell.com/blog/articles/HowToConfigPublishingSiteWithDualAuthProvidersAndAnonAccess.aspx&lt;/a&gt; &lt;p&gt;I was trying to configure this on a test server and wanted to avoid using the Visual Studio 2005 development environment, as this won't be present on the production web server.  Instead of creating the sample web project, I placed the recommended web.config file below into a directory, in my case c:\formsauth\web.config: &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br&gt;&amp;lt;configuration xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/.NetConfiguration/v2.0&amp;quot;"&gt;&lt;font face="Courier New" size=2&gt;http://schemas.microsoft.com/.NetConfiguration/v2.0&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" size=2&gt;&amp;gt;&lt;br&gt;&amp;lt;appSettings/&amp;gt;&lt;br&gt;&amp;lt;connectionStrings&amp;gt;&lt;br&gt;&amp;lt;add name=&amp;quot;AcSqlConnString&amp;quot; connectionString=&amp;quot;server=vmdemo1;database=aspnetdb;integrated security=sspi;&amp;quot; providerName=&amp;quot;System.Data.SqlClient&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/connectionStrings&amp;gt;&lt;br&gt;&amp;lt;system.web&amp;gt;&lt;br&gt;&amp;lt;!-- membership provider --&amp;gt;&lt;br&gt;&amp;lt;membership defaultProvider=&amp;quot;AcAspNetSqlMembershipProvider&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;providers&amp;gt;&lt;br&gt;&amp;lt;add name=&amp;quot;AcAspNetSqlMembershipProvider&amp;quot; type=&amp;quot;System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; connectionStringName=&amp;quot;AcSqlConnString&amp;quot; enablePasswordRetrieval=&amp;quot;false&amp;quot; enablePasswordReset=&amp;quot;true&amp;quot; requiresQuestionAndAnswer=&amp;quot;false&amp;quot; applicationName=&amp;quot;/&amp;quot; requiresUniqueEmail=&amp;quot;false&amp;quot; passwordFormat=&amp;quot;Hashed&amp;quot; maxInvalidPasswordAttempts=&amp;quot;5&amp;quot; minRequiredPasswordLength=&amp;quot;1&amp;quot; minRequiredNonalphanumericCharacters=&amp;quot;0&amp;quot; passwordAttemptWindow=&amp;quot;10&amp;quot; passwordStrengthRegularExpression=&amp;quot;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/providers&amp;gt;&lt;br&gt;&amp;lt;/membership&amp;gt;&lt;br&gt;&amp;lt;!-- role provider --&amp;gt;&lt;br&gt;&amp;lt;roleManager enabled=&amp;quot;true&amp;quot; defaultProvider=&amp;quot;AcAspNetSqlRoleProvider&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;providers&amp;gt;&lt;br&gt;&amp;lt;add name=&amp;quot;AcAspNetSqlRoleProvider&amp;quot; type=&amp;quot;System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&amp;quot; connectionStringName=&amp;quot;AcSqlConnString&amp;quot; applicationName=&amp;quot;/&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/providers&amp;gt;&lt;br&gt;&amp;lt;/roleManager&amp;gt;&lt;br&gt;&amp;lt;compilation debug=&amp;quot;false&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;authentication mode=&amp;quot;Forms&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/system.web&amp;gt;&lt;br&gt;&amp;lt;/configuration&amp;gt;&lt;/font&gt;&lt;/blockquote&gt; &lt;p&gt;Then I created a batch file that would perform the same operation as the visual studio WebSite, ASP.NET Configuration menu option. It configures and launches an instance of the Cassini web server to run the ASP Web Admin site. Phil Scott provided the details here:&lt;br&gt;&lt;a title="http://blogs.neudesic.com/blogs/phil_scott/archive/2006/07/04/187.aspx" href="http://blogs.neudesic.com/blogs/phil_scott/archive/2006/07/04/187.aspx"&gt;http://blogs.neudesic.com/blogs/phil_scott/archive/2006/07/04/187.aspx&lt;/a&gt; &lt;p&gt;Here's the contents of my asp.netwebadmin.bat batch file: &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;@echo off&lt;br&gt;SET FrameWorkFolder=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727&lt;br&gt;SET VFolder=Asp.NetWebAdminFiles&lt;br&gt;SET Port=8099&lt;br&gt;SET App=/formsauth&lt;br&gt;SET AppPath=C:\formsauth\ &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;explorer &amp;quot;&lt;/font&gt;&lt;a&gt;&lt;font face="Courier New" size=2&gt;http://localhost:%Port%/%VFolder%/default.aspx?applicationPhysicalPath=%AppPath%&amp;amp;applicationUrl=%App%&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" size=2&gt; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;%FrameWorkFolder%\WebDev.WebServer.EXE /port:%Port% /path:%FrameWorkFolder%\%VFolder% /vpath:/%VFolder% &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt; &lt;/font&gt;&lt;/blockquote&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Forms+Authentication+with+SharePoint&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!170.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!170.entry</guid><pubDate>Tue, 12 Jun 2007 12:56:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!170/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!170.entry#comment</wfw:comment><dcterms:modified>2007-06-13T14:41:35Z</dcterms:modified></item><item><title>Coding Practices</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!165.entry</link><description>&lt;p&gt;This has been sitting in my drafts folder for some time...  The link below contains some SharePoint development best practices. Note that some objects require disposal depending on the way you obtain them, like site and web references. We wrapped these in a class that handles obtaining them whether you're running in dev mode or on a live site, and disposes of them if necessary. It's the way we get the site reference in dev mode that needs to be released. I can't say I've really noticed the difference, but I think I've had to reboot fewer times since we started using them properly. &lt;p&gt;Best practices reference: &lt;p&gt;&lt;a title="http://msdn2.microsoft.com/en-us/library/ms778813.aspx" href="http://msdn2.Microsoft.com/en-us/library/ms778813.aspx"&gt;http://msdn2.Microsoft.com/en-us/library/ms778813.aspx&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Coding+Practices&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!165.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!165.entry</guid><pubDate>Thu, 07 Jun 2007 23:45:11 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!165/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!165.entry#comment</wfw:comment><dcterms:modified>2007-06-07T23:46:41Z</dcterms:modified></item><item><title>The return of NDoc</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!164.entry</link><description>&lt;p&gt;I used to be a huge fan of the NDoc documentation generator. It read through all the XML documentation you put in your code and assembled a .CHM or html help file all automatically.  I started documenting everything we had and then .NET 2.0 came out. NDoc never finished the upgrade to work with all the 2.0 stuff. It was a dead end. I was so disappointed - &lt;strong&gt;&lt;font color="#ff0000"&gt;until today&lt;/font&gt;&lt;/strong&gt;.  &lt;p&gt;MicroSoft's Sandcastle project (see links below) replaces much of the functionality that NDoc had. That combined with a third party GUI front end gives me back much of what Ndoc offered.  &lt;p&gt;The GUI front end of the documentation compiler: &lt;p&gt;&lt;a href="http://blufiles.storage.msn.com/y1pSVfZqA8TucAatlW-n00pIEZiNGEzccOSIO3tMCgruuCZnjH7wvJLjA5zoJE3ae8fHPJ5QG5EHVM"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=573 src="http://blufiles.storage.msn.com/y1pSVfZqA8TucDoIdHvBKf9K_0a6ElHbG_FgD0fTy9AAqqFHupDyopvAn2XJZlBz-zKI2EcVIHVm9c" width=762 border=0&gt;&lt;/a&gt;  &lt;p&gt;A view of a sample page from the CHM documentation: &lt;p&gt;&lt;a href="http://blufiles.storage.msn.com/y1pSVfZqA8TucA5U0PA9OAj7Sifaz7YYJzzVeIv48PEuoILlUvMy154ZWK_9Ve1uzyoRNUW7oQ5VRM"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=590 src="http://blufiles.storage.msn.com/y1pSVfZqA8TucAmg6moStSuwuwYSRtxxJrJcy1S9BuC7qyh4N5f9jnG6RTKpUE6rl2PprRreQS6tGc" width=757 border=0&gt;&lt;/a&gt;  &lt;p&gt;I also found another tool that is extemely helpful in generating the XML documentation in the first place. Ghostdoc will look at your code and insert an XML comment with some pretty decent default info. You just need to tweak some of the comments and your done. &lt;p&gt;The Ghostdoc context menu inside Visual Studio 2005, note the &amp;quot;Document this&amp;quot; option: &lt;p&gt;&lt;a href="http://blufiles.storage.msn.com/y1pSVfZqA8TucD7jfGTzm941UEmnDh4VaQtJUhwMmQQyIqqXJVRBWqcMzejeOiAvcDHKEpsTTIYz0I"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px" height=456 src="http://blufiles.storage.msn.com/y1pSVfZqA8TucDwTKxtKKBWZpnGVCQzoQxZW5Xh6rrzUKoM8DpfFctMzZQU_zji7wbF0yLcqMiVjlc" width=168 border=0&gt;&lt;/a&gt;  &lt;p&gt;A sample after clicking Document this inside the method: &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=3&gt;&lt;font color="#808080"&gt;/// &amp;lt;summary&amp;gt;&lt;br&gt;/// &lt;font color="#008040"&gt;Does something.&lt;/font&gt;&lt;br&gt;/// &amp;lt;/summary&amp;gt;&lt;br&gt;/// &amp;lt;param name=&amp;quot;param1&amp;quot;&amp;gt;&lt;font color="#008040"&gt;The param1.&lt;/font&gt;&amp;lt;/param&amp;gt;&lt;br&gt;/// &amp;lt;param name=&amp;quot;param2&amp;quot;&amp;gt;&lt;font color="#008040"&gt;The param2.&lt;/font&gt;&amp;lt;/param&amp;gt;&lt;br&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br&gt;&lt;/font&gt;public bool &lt;font color="#000000"&gt;DoSomething&lt;/font&gt;(string &lt;font color="#000000"&gt;param1&lt;/font&gt;, int &lt;font color="#000000"&gt;param2&lt;/font&gt;)&lt;br&gt;&lt;font color="#000000"&gt;{&lt;br&gt;}&lt;/font&gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#000000" size=3&gt;&lt;/font&gt;  &lt;p&gt;Sandcastle CTP Download:&lt;br&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en&lt;/a&gt;)  &lt;p&gt;Sandcastle Help File Builder GUI front end for Sandcastle.&lt;br&gt;&lt;a title="http://www.codeplex.com/SHFB" href="http://www.codeplex.com/SHFB"&gt;http://www.codeplex.com/SHFB&lt;/a&gt; &lt;p&gt;Ghostdoc&lt;br&gt;&lt;a href="http://www.roland-weigelt.de/ghostdoc"&gt;www.roland-weigelt.de/ghostdoc&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+The+return+of+NDoc&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!164.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!164.entry</guid><pubDate>Thu, 17 May 2007 20:14:55 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!164/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!164.entry#comment</wfw:comment><dcterms:modified>2007-05-17T20:14:55Z</dcterms:modified></item><item><title>Telerik Controls Are Awesome!</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!157.entry</link><description>&lt;p&gt;If you need some controls for ASP.NET development, check out &lt;a href="http://www.telerik.com"&gt;www.telerik.com&lt;/a&gt;. Their controls are easy to use and work flawlessly. We just saved a huge bunch of time by dropping these in.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Telerik+Controls+Are+Awesome!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!157.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!157.entry</guid><pubDate>Thu, 26 Apr 2007 01:55:27 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!157/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!157.entry#comment</wfw:comment><dcterms:modified>2007-04-26T01:55:27Z</dcterms:modified></item><item><title>Access to the WSS 3.0 MSEE SQL Engine</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!156.entry</link><description>&lt;p&gt;I've believed it was impossible to connect to the &lt;strong&gt;Microsoft##SSEE&lt;/strong&gt; instance installed on WSS 3.0 by default. I tried to connect every which way and the ONLY way I was able to take a look at the WSS databases was to stop SQL server, copy the MDF files and attach to a standard instance of SQL Server 2005. &lt;p&gt;But it appears you CAN gain access to it using the following special path: &lt;p&gt;&lt;strong&gt;&lt;a&gt;\\.\pipe\mssql$microsoft##ssee\sql\query&lt;/a&gt;&lt;/strong&gt; &lt;p&gt;It is apparently considered bad practice to touch the WSS database in anyway, but if you want you see what's going on under the hood, you can. &lt;p&gt;Thanks to this blog entry: &lt;a title="http://www.wssdemo.com/blog/Lists/Posts/Post.aspx?ID=258" href="http://www.wssdemo.com/blog/Lists/Posts/Post.aspx?ID=258"&gt;http://www.wssdemo.com/blog/Lists/Posts/Post.aspx?ID=258&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Access+to+the+WSS+3.0+MSEE+SQL+Engine&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!156.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!156.entry</guid><pubDate>Mon, 23 Apr 2007 21:24:15 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!156/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!156.entry#comment</wfw:comment><dcterms:modified>2007-04-23T21:24:15Z</dcterms:modified></item><item><title>Handy right click for gacutil</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!154.entry</link><description>&lt;p&gt; &lt;p&gt;Put the following in a text file, rename with a .reg extension, double click and you'll get a handy right click utility to push dlls to the gac. &lt;p&gt;&lt;font color="#ff0000"&gt;Windows Registry Editor Version 5.00 &lt;/font&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;[HKEY_CLASSES_ROOT\dllfile\shell\gacutil\command]&lt;br&gt;@=&amp;quot;C:\\Program Files\\Microsoft Visual Studio 8\\SDK\\v2.0\\Bin\\gacutil.exe /i \&amp;quot;%1\&amp;quot;&amp;quot;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Handy+right+click+for+gacutil&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!154.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!154.entry</guid><pubDate>Thu, 05 Apr 2007 20:55:23 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!154/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!154.entry#comment</wfw:comment><dcterms:modified>2007-04-05T20:55:23Z</dcterms:modified></item><item><title>New Site Column &amp; Content Type</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!153.entry</link><description>&lt;p&gt;Here's a nice article providing step by step instructions for adding a site column and a new content type. &lt;p&gt;&lt;a title="http://covellefiles.tripod.com/Blogspot/Content_Types__Site_Columns.pdf" href="http://covellefiles.tripod.com/Blogspot/Content_Types__Site_Columns.pdf"&gt;http://covellefiles.tripod.com/Blogspot/Content_Types__Site_Columns.pdf&lt;/a&gt; &lt;p&gt;You can then associate the new content type with a library or list through code.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+New+Site+Column+%26+Content+Type&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!153.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!153.entry</guid><pubDate>Fri, 30 Mar 2007 23:48:32 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!153/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!153.entry#comment</wfw:comment><dcterms:modified>2007-03-30T23:48:32Z</dcterms:modified></item><item><title>List Tidbits 1</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!152.entry</link><description>&lt;p&gt;Encountered a few things to note working with Lists: &lt;p&gt;1. The first is a reminder that you must always use internal names when building CAML for queries. I have a few lists, created from a feature using the Custom List template. I change the Title for the &amp;quot;Title&amp;quot; field to something else, like &amp;quot;Key&amp;quot; for example, but internally it remains &amp;quot;Title.&amp;quot; If you're building CAML to query this field, be sure to use its internal name. If you're adding new fields, these will have the name you assign both internally and externally. I remember seeing this before working with lists, renaming fields through the UI and then discovering the internal names did not change. &lt;p&gt;The error you get in this case is pretty odd: &lt;p&gt;&lt;font color="#ff0000"&gt;Exception caught Microsoft.SharePoint.SPException: One or more field types are not installed properly. Go to the list settings page to delete these fields. ---&amp;gt;&lt;br&gt; System.Runtime.InteropServices.COMException (0x81020014): One or more field types are not installed properly. Go to the list settings page to delete these fields. &lt;/font&gt; &lt;p&gt;Thanks to &lt;a title="http://thorprojects.com/blog/archive/2007/02/23/643.aspx" href="http://thorprojects.com/blog/archive/2007/02/23/643.aspx"&gt;http://thorprojects.com/blog/archive/2007/02/23/643.aspx&lt;/a&gt; for pointing me in the right direction. &lt;p&gt;2. Also discovered I had to use site.AllowUnsafeUpdates= true when writing values back to a list. Not entirely sure why... &lt;p&gt;3. I'm still mystified as to when you can and cannot use field name indexing with working with a SPListItem collection. At first I think I discovered one field name you can never use (ItemGuid), next I thought it had to do with the first field being renamed (see above), or you just couldn't do it for the first field, now I'm beginning to think it's just random...  There must be some weird voodoo magic I'm not understanding about this. Some day I'll figure it out...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+List+Tidbits+1&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!152.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!152.entry</guid><pubDate>Thu, 29 Mar 2007 21:09:34 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!152/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!152.entry#comment</wfw:comment><dcterms:modified>2007-03-29T21:09:34Z</dcterms:modified></item><item><title>Something funny with gacutil?</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!151.entry</link><description>&lt;p&gt;Every now and then, my build starts reporting and error executing a post build event to place the custom control DLL (see prior post on development) into the GAC: &amp;quot;gacutil exit code 1&amp;quot;. I do the usual, stop the local ASP.NET, do IISRESET, and that usually takes care of it allowing the build to be repeated. There have been a few times where a complete reboot is necessary. &lt;p&gt;During these times I noticed that something appears to be stuck or locked in relation to the GAC. If you open windows explorer and navigate to: \windows\assembly to view the contents of the GAC - it shows up blank. This is usually a sign that a reboot will be required. &lt;p&gt;One thing that occurred to me yesterday (it was one of those &amp;quot;duh&amp;quot; moments) was that I might have had one of the .aspx pages open in design mode, which would have loaded the custom control DLL to be able to render it in the designer, thus making it impossible to unload through normal means.  Haven't had it happen again to confirm this, but something else to look out for...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Something+funny+with+gacutil%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!151.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!151.entry</guid><pubDate>Fri, 23 Mar 2007 13:04:42 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!151/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!151.entry#comment</wfw:comment><dcterms:modified>2007-03-23T13:06:14Z</dcterms:modified></item><item><title>Development under SharePoint</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!150.entry</link><description>&lt;p&gt;We've been building a web app that runs under the SharePoint context. It is possible to configure your setup so that you can do normal vs2005 web development and run in the local asp.net hosting environment as well as being able to run your site by opening a browser and navigating to its path within SharePoint.  &lt;p&gt;The trick is to first setup your solution to build and deploy into SharePoint. In our case, we're making web pages that will run under the _layouts folder of SharePoint. We get the benifit of one code base and being able to get the correct context (see earlier post on context).  &lt;p&gt;With really no changes you should be able to do F5-run inside visual studio and run the same site. You have to get the site context differently, but it mostly works. Except user controls inside a .ascx page. &lt;p&gt;It is possible to use user controls in an .ascx page in both SharePoint and in local web development. The problem was the page code behind reference needed to be different for each. I wanted to put the control page into CONTROLTEMPLATES because its trusted by SharePoint but that requires a ~/CONTROLTEMPLATES refereence by SharePoint. F5 Wev development expects a real path and doesn't understand SharePoints virtual path provider syntax.  I didn't find a way around this, but I did find a way to put the user control in a DLL without requiring an .ascx page. &lt;p&gt;You can probably find more on this on the web but you can inherit from an existing control and by adding some code attributes, make it into a user control. The control dll also needs to go in the GAC. &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;[ToolboxData(&amp;quot;&amp;lt;{0}:fldView runat=server&amp;gt;&amp;lt;/{0}:fldView&amp;gt;&amp;quot;)]&lt;br&gt;public partial class FolderView : TreeView &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;...&lt;/font&gt; &lt;p&gt;In your .aspx page you reference the control like this. &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;fldView&amp;quot; Assembly=&amp;quot;CustomControls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14bb334e930a8e4b&amp;quot; Namespace=&amp;quot;CustomControls.Folder&amp;quot; %&amp;gt;&lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;...&lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;fldView:FolderView id=&amp;quot;treeFolder&amp;quot; runat=&amp;quot;server&amp;quot; IncludeDocuments=&amp;quot;false&amp;quot; BackColor=&amp;quot;White&amp;quot; Font-Names=&amp;quot;Arial&amp;quot;&lt;br&gt;Font-Size=&amp;quot;X-Small&amp;quot;/&amp;gt;&lt;/font&gt;  &lt;p&gt;You do need to reference your control in the local web.config. There is probably a way around this as well. &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;&amp;lt;pages&amp;gt;&lt;br&gt;&amp;lt;controls&amp;gt;&lt;br&gt;&amp;lt;add tagPrefix=&amp;quot;fldView&amp;quot; namespace=&amp;quot;CustomControls.Folder&amp;quot; assembly=&amp;quot;CustomControls&amp;quot;/&amp;gt;&lt;br&gt;&amp;lt;/controls&amp;gt;&lt;br&gt;&amp;lt;/pages&amp;gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+Development+under+SharePoint&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=colinborrowman.spaces.live.com&amp;amp;GT1=colinborrowman"&gt;</description><comments>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!150.entry#comment</comments><guid isPermaLink="true">http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!150.entry</guid><pubDate>Thu, 22 Mar 2007 18:42:56 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://colinborrowman.spaces.live.com/blog/cns!5BE1E6D14CDF840F!150/comments/feed.rss</wfw:commentRss><wfw:comment>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!150.entry#comment</wfw:comment><dcterms:modified>2007-03-22T18:42:56Z</dcterms:modified></item><item><title>ItemGuid is a RESERVED WORD???</title><link>http://colinborrowman.spaces.live.com/Blog/cns!5BE1E6D14CDF840F!149.entry</link><description>&lt;p&gt;I spent the better part of a day figuring this out. Something very strange was occurring related to context and queries. Actually the context was just another thing to throw me off the correct answer.  &lt;p&gt;I'm doing a query to get back data from a list and I want to examine a particular field from the results: &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;SPList list = item.ParentList;&lt;br&gt;SPQuery query = new SPQuery();&lt;br&gt;query.Query = @&amp;quot;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='ParentGuid'/&amp;gt;&amp;lt;Value Type='Text'&amp;gt;&amp;quot; + item.UniqueId.ToString() + &amp;quot;&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;lt;OrderBy&amp;gt;&amp;lt;FieldRef Name='ID' /&amp;gt;&amp;lt;/OrderBy&amp;gt;&amp;quot;&lt;br&gt;SPListItemCollection itemCollection = list.GetItems(query); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;foreach (SPListItem child in itemCollection)&lt;br&gt;{&lt;/font&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size=2&gt;if(child[&amp;quot;ItemGuid&amp;quot;] == null)&lt;br&gt;{  ...&lt;/font&gt;&lt;/blockquote&gt; &lt;p&gt;Sometimes I write/text SharePoint code from a windows forms app just to make the code/dev/debug turn around a little easier. In this case, the odd thing is that I could access this field using the field name indexer when running from the windows forms app. When I moved the code to a web app, the field name indexer stopped working with the following error: &lt;p&gt;&amp;quot;&lt;font color="#ff0000"&gt;Value does not fall within the expected range.&amp;quot;&lt;/font&gt;  &lt;p&gt;This ended up being about the actual field name I selected &amp;quot;ItemGuid.&amp;quot; It was being returned in the query, I could see it in the query results XML, but I could not access it with the field name indexer.   &lt;p&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;xml xmlns:s=&amp;quot;&lt;b&gt;uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882&lt;/b&gt;&amp;quot; xmlns:dt=&amp;quot;&lt;b&gt;uuid:C2F41010-65B3-11d1-A29F-00AA00C14882&lt;/b&gt;&amp;quot; xmlns:rs=&amp;quot;&lt;b&gt;urn:schemas-microsoft-com:rowset&lt;/b&gt;&amp;quot; xmlns:z=&amp;quot;&lt;b&gt;#RowsetSchema&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:Schema id=&amp;quot;&lt;b&gt;RowsetSchema&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:ElementType name=&amp;quot;&lt;b&gt;row&lt;/b&gt;&amp;quot; content=&amp;quot;&lt;b&gt;eltOnly&lt;/b&gt;&amp;quot; rs:CommandTimeout=&amp;quot;&lt;b&gt;30&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows_ContentTypeId&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;b&gt;Content Type ID&lt;/b&gt;&amp;quot; rs:number=&amp;quot;&lt;b&gt;1&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;int&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;512&lt;/b&gt;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/s:AttributeType&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows_Title&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;b&gt;Title&lt;/b&gt;&amp;quot; rs:number=&amp;quot;&lt;b&gt;2&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;string&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;512&lt;/b&gt;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/s:AttributeType&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows__ModerationComments&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;b&gt;Approver Comments&lt;/b&gt;&amp;quot; rs:number=&amp;quot;&lt;b&gt;3&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;string&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;1073741823&lt;/b&gt;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/s:AttributeType&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows_File_x0020_Type&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;b&gt;File Type&lt;/b&gt;&amp;quot; rs:number=&amp;quot;&lt;b&gt;4&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;string&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;512&lt;/b&gt;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/s:AttributeType&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows_ItemGuid&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;font color="#ff0000"&gt;&lt;b&gt;ItemGuid&lt;/b&gt;&amp;quot;&lt;/font&gt; rs:number=&amp;quot;&lt;b&gt;5&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;string&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;512&lt;/b&gt;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/s:AttributeType&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows_ParentGuid&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;b&gt;ParentGuid&lt;/b&gt;&amp;quot; rs:number=&amp;quot;&lt;b&gt;6&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;string&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;512&lt;/b&gt;&amp;quot; /&amp;gt;&lt;br&gt;&amp;lt;/s:AttributeType&amp;gt;&lt;br&gt;&lt;/font&gt;&lt;a href="#"&gt;&lt;font color="#0000ff"&gt;-&lt;/font&gt;&lt;/a&gt;&lt;font color="#0000ff"&gt; &amp;lt;s:AttributeType name=&amp;quot;&lt;b&gt;ows_Path&lt;/b&gt;&amp;quot; rs:name=&amp;quot;&lt;b&gt;Path&lt;/b&gt;&amp;quot; rs:number=&amp;quot;&lt;b&gt;7&lt;/b&gt;&amp;quot;&amp;gt;&lt;br&gt;&amp;lt;s:datatype dt:type=&amp;quot;&lt;b&gt;string&lt;/b&gt;&amp;quot; dt:maxLength=&amp;quot;&lt;b&gt;512&lt;/b&gt;&amp;quot; /&amp;gt;&lt;/font&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;...&lt;/font&gt; &lt;p&gt;I changed the field name to DocumentGuid and everything started working. I guess it makes sense that this is some kind of internal keyword. List items are &amp;quot;items&amp;quot; and have a &amp;quot;guid&amp;quot; but sheeesh... &lt;p&gt;By the way, the field name indexer is NOT case sensitive. &lt;font face="Courier New" color="#0000ff"&gt;item[&amp;quot;DocumentGuid&amp;quot;]&lt;/font&gt; works the same as &lt;font face="Courier New" color="#0000ff"&gt;item[&amp;quot;documentGuid&amp;quot;]&lt;/font&gt; &lt;p&gt;&lt;font color="#0000ff" size=1&gt;P.S. There is still something odd about using the name indexer it appears to work sometimes and not others... I'll have to investigate this further...&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=6620826713823609871&amp;page=RSS%3a+ItemGuid+is+a+RESERVED+WORD%3f%3f%3f&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width=