<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Sanjay Narang's thoughts on SharePoint</title><link>http://blogs.msdn.com/sanjaynarang/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Beginning SharePoint development from zero</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/06/24/beginning-sharepoint-development-from-zero.aspx</link><pubDate>Tue, 23 Jun 2009 21:54:43 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9800034</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9800034.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9800034</wfw:commentRss><description>&lt;p&gt;Recently, I got a request from one of my friend who had never worked on SharePoint to provide him resources to quickly get on speed with SharePoint. It was really tough to tell about SharePoint technologies (WSS 3.0 and MOSS 2007), which is such huge and expansive area, to someone who hasn’t seen it is really challenging. I tried to provide him some resources with context. Sharing it here also as there could be many others like my friend.&lt;/p&gt;  &lt;h2&gt;Getting to Know&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;ONE STOP SHOP&lt;/strong&gt;: where you’d find most of the resources is this portal: &lt;a href="http://sharepoint.microsoft.com/" target="_blank"&gt;http://sharepoint.microsoft.com/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Again, the portal has so many resources that one can get lost easily. So here’s the order that you can start with&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;High Level Overview&lt;/b&gt;: To get a very high level overview and know what kind of product you are heading to, read this article: &lt;a title="Introduction to Microsoft Office SharePoint Server 2007" href="http://office.microsoft.com/en-us/sharepointserver/HA101732171033.aspx" target="_blank"&gt;Introduction to Microsoft Office SharePoint Server 2007&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;End User Training&lt;/strong&gt;:&amp;#160; To start with you should know how to “use” SharePoint. How does SharePoint looks like. For this, you should go through end user training. One of the great resource is End User Training from Microsoft:&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointserver/HA102488011033.aspx"&gt;http://office.microsoft.com/en-us/sharepointserver/HA102488011033.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;You can download the standalone edition and go through some of the trainings available here.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Environment&lt;/strong&gt;: To learn how to “use” or develop in SharePoint, it’s very important that you have working environment, where you can try hands-on! For this, you can either download &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1beeac6f-2ea1-4769-9948-74a74bd604fa&amp;amp;DisplayLang=en"&gt;pre installed VPC&lt;/a&gt; or download &lt;a href="http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb400747.aspx"&gt;WSS&lt;/a&gt; or &lt;a href="http://technet.microsoft.com/en-us/evalcenter/bb727242.aspx"&gt;evaluation version of MOSS 2007&lt;/a&gt; and install it on your server.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Evaluation Guides&lt;/strong&gt;: Once you get a little hang of SharePoint, get a quick look at all features available in WSS and MOSS from their respective evaluation guides: &lt;a href="http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb400753.aspx"&gt;WSS&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/cc262881.aspx"&gt;SharePoint&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Developing&lt;/h2&gt;  &lt;p&gt;Once you have gone through the above resources, there are plenty of places where you can start learning about the development. Here are a few of resources that can get you up to speed quickly:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/click/SharePointDeveloper/" target="_blank"&gt;SharePointDeveloper Portal&lt;/a&gt;: A lot of 100-200 level resources to get you started&lt;/li&gt;    &lt;li&gt;Ramp Up Portal: It has modules for many technologies. There are two modules on SharePoint – &lt;a title="Track: SharePoint for Developers – Part 1" href="http://msdn.microsoft.com/en-us/rampup/dd221355.aspx" target="_blank"&gt;part 1&lt;/a&gt; and &lt;a title="Track: SharePoint for Developers – Part 2" href="http://msdn.microsoft.com/en-us/rampup/dd320759.aspx" target="_blank"&gt;part 2&lt;/a&gt;&amp;#160;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After going through above resources you are ready to venture anywhere in the world of SharePoint! It’s huge, you can start from anywhere and go anywhere! Any list of resources would not do justice to available resources on the net. &lt;/p&gt;  &lt;p&gt;In any case, I’m providing a few Pages that provide links to other resources:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/kaevans/archive/2009/02/17/free-sharepoint-developer-resources.aspx"&gt;http://blogs.msdn.com/kaevans/archive/2009/02/17/free-sharepoint-developer-resources.aspx&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.intranetjournal.com/sharepoint/"&gt;http://www.intranetjournal.com/sharepoint/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Cheers! &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9800034" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Resources/default.aspx">Resources</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>Should I Build my application in SharePoint vs. ASP.net</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/06/19/should-i-build-my-application-in-sharepoint-vs-asp-net.aspx</link><pubDate>Fri, 19 Jun 2009 13:01:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9784481</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9784481.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9784481</wfw:commentRss><description>&lt;p&gt;Many times, I get question from my customers if they should build a new application in SharePoint or ASP.net. For certain kind of applications such as Collaboration or KM Portal, Internet facing web site, intranet social networking site, applications requiring browser enabled forms or Enterprise Search, SharePoint is THE option to go for. &lt;/p&gt;  &lt;p&gt;However, it’s not a straight forward answer for all types of applications. You need to look at different aspects before deciding. I’ve put a high level list of questions that I use to make such decisions. Hopefully, the questions should help you also.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;What are the features that you are going to use out-of-the-box (OOB) from SharePoint (site provisioning, search, version control, roles/groups, easy forms (list edit, new, view pages), collaboration, workflows, content deployment, alerts ) )      &lt;ol&gt;       &lt;li&gt;The list of feature is huge, have a look at evaluation guides for complete list: &lt;a title="Windows SharePoint Services 3.0 Evaluation Guide" href="http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb400753.aspx" target="_blank"&gt;WSS&lt;/a&gt;, &lt;a title="White paper: Evaluation guide for Office SharePoint Server 2007" href="http://technet.microsoft.com/en-us/library/cc262881.aspx" target="_blank"&gt;SharePoint&lt;/a&gt; and &lt;a title="SharePoint Search Evaluation Guide" href="http://office.microsoft.com/download/afile.aspx?AssetID=AM102140171033"&gt;Search&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;If you are not using any of these features what’s it that you’d gain from SharePoint? &lt;/li&gt;        &lt;li&gt;If you need these features, why are you thinking of not going with SharePoint? What’s the effort if you custom build those features? &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;What are the features that I’m going to build custom (for example, reports for some applications would be custom and need relational tables with transactional support)      &lt;ol&gt;       &lt;li&gt;How much effort is required for custom development in ASP.net vs. in SharePoint? Is the difference huge? &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;What kind of application it is? Is it one off application, or this is going to replicated across many teams. SharePoint is an excellent platform where you need to replicate one type of site to many teams. &lt;/li&gt;    &lt;li&gt;What are the required Scale and Performance objectives of your application      &lt;ol&gt;       &lt;li&gt;SharePoint has &lt;a title="Plan for software boundaries (Office SharePoint Server)" href="http://technet.microsoft.com/en-us/library/cc262787.aspx"&gt;some boundaries&lt;/a&gt;, most of these can be avoided with adjusted design or workaround. Would the adjusted design or workaround be acceptable to your users? Examples:           &lt;ol&gt;           &lt;li&gt;2000 list items at a single level – a well know limitation &lt;/li&gt;            &lt;li&gt;2000 security principles for a securable object – a lesser known limitation, but this can create problems when users in a site collection grows more than 2000 – there are workarounds for this (such as using AD security groups) – are those acceptable? &lt;/li&gt;         &lt;/ol&gt;       &lt;/li&gt;        &lt;li&gt;SharePoint may not be able to match the performance of a plain ASP.net application as it does a lot more work (security trimming, getting files from database etc.) Can your performance targets be met using SharePoint?          &lt;ol&gt;           &lt;li&gt;You can check benchmarks published by Microsoft or other vendors (such as HP, Intel) to see if SharePoint can meet your requirements. Links to most of the benchmarks are available in this blog post: &lt;a title="Sanjay Narang Blog Post on SharePoint load testing" href="http://blogs.msdn.com/sanjaynarang/archive/2009/04/18/sharepoint-performance-stress-load-testing.aspx"&gt;SharePoint (Performance, Stress ) Load Testing&lt;/a&gt;&amp;#160; &lt;/li&gt;         &lt;/ol&gt;       &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;How many employees would be using these application? How many requests you can expect for customization from different teams. Remember, SharePoint provides a pretty good platform for customization and personalization. &lt;/li&gt;    &lt;li&gt;How much time do you have to build such apps? Can you use some off-the-shelf solutions? For examples, there are many custom applications which be deployed in no time by using WSS Application Templates (&lt;a href="http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb407286.aspx"&gt;http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb407286.aspx&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;What’s the cost you can afford. Remember, you need not buy any separate license, if you are only using Windows SharePoint Services. Have a look at difference of features between WSS and MOSS in the &lt;a title="Differences between WSS 3.0 and MOSS 2007" href="http://sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx?List=8d9e2a99-f288-47c2-916b-2f32864f7b82&amp;amp;ID=4" target="_blank"&gt;comparison Excel spreadsheet&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;What skills your developers have? Though SharePoint is based on ASP.net, but you need have additional knowledge to develop SharePoint applications. Also, development is SharePoint is not like normal .NET development (for example, you don’t get WYSWYG designer to develop web parts for SharePoint). You also need to take extra care to follow same build and source control process that you do for .Net code. Have a look at &lt;a href="http://msdn.microsoft.com/en-us/office/cc990283.aspx" target="_blank"&gt;Application Lifecycle Management Resource Center for SharePoint Server&lt;/a&gt; for more details. &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9784481" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>SharePoint (Performance, Stress ) Load Testing</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/04/18/sharepoint-performance-stress-load-testing.aspx</link><pubDate>Sat, 18 Apr 2009 19:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9555117</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9555117.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9555117</wfw:commentRss><description>&lt;P&gt;&lt;U&gt;Updated On 22-July-2009&lt;/U&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Whenever I've helped my customers in performance testing and analysis of SharePoint, I get one common question: Can you tell us more about "SharePoint Load Testing" and links where I can learn more? Doing a quick web search on "SharePoint Load Testing" or "SharePoint Performance Testing" - you get all kinds of results such as data population tools, performance tuning techniques, handling large lists etc. However, it's not very easy to get results about, How to go about load testing SharePoint, what are the counters that i should measure, where can i find real life bench mark results of SharePoint? That's exactly, what I am trying to in this post. I'm trying to cover all the resources that I know about load testing. I wouldn't be covering much about Performance Tuning and Analysis. &lt;/P&gt;
&lt;P&gt;One important thing than many people don't know is this - There’s nothing much specific to SharePoint when it comes to performance testing. SharePoint provides a few objects (e.g. for Publishing Cache, Search Indexer). Otherwise, same principles that applies to ASP.net also apply to SharePoint. Basically, we have to analyze different objects and counters (Memory, CPU, Disk, Network, CLR) in relation with required parameters such as throughput, response time, user load etc. to find out various issues. Below is the list of resources that would help you in doing that:&lt;/P&gt;
&lt;H2&gt;Official Documentation&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc262971.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262971.aspx"&gt;Plan for performance and capacity (Office SharePoint Server)&lt;/A&gt; - It is landing page for all the documentation available for SharePoint related to performance and capacity. There are many resources in this page, that I’ve referred in other section also. &lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;References of Real life performance testing to get the bench mark results&lt;/H2&gt;
&lt;P&gt;There are many times when you do performance testing in your environment, but don’t know if your results are good or not. The links in this section would help you in finding that.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc261716.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc261716.aspx"&gt;Estimate performance and capacity requirements (Office SharePoint Server)&lt;/A&gt; Provides references of actual performance testing done by Microsoft in difference scenarios and the benchmark results from those tests. Provides specific results and guidance for the following scenarios: &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc261795.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc261795.aspx"&gt;WSS collaboration&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc263100.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc263100.aspx"&gt;Portal collaboration&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc262574.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262574.aspx"&gt;Search&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc263500.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc263500.aspx"&gt;Excel Services&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc262405.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262405.aspx"&gt;Internet/WCM&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://technet.microsoft.com/en-us/library/dd277865.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/dd277865.aspx"&gt;Hyper-V environment&lt;/A&gt; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;&lt;A href="http://download.microsoft.com/download/4/a/e/4ae18f62-ead5-4799-8a71-1d51d6806b03/Skalierungstest_einer_SharePoint-Farm_fuer_2_Millionen_Anwender.pdf" target=_blank mce_href="http://download.microsoft.com/download/4/a/e/4ae18f62-ead5-4799-8a71-1d51d6806b03/Skalierungstest_einer_SharePoint-Farm_fuer_2_Millionen_Anwender.pdf"&gt;2 Million User Scale Test by Microsoft Enterprise Engineering Center&lt;/A&gt;: Results from scalability test that Microsoft conducted to address the concerns of a customer who wanted to deploy MOSS for 2 million internal users. The report provides a description of the goals achieved, test architecture, metrics and success criteria, testing methodology and terminology. A very useful and comprehensive resource that provides understanding of almost every aspect of performance testing in SharePoint context. 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://h71019.www7.hp.com/ActiveAnswers/cache/70677-0-0-0-121.html" target=_blank mce_href="http://h71019.www7.hp.com/ActiveAnswers/cache/70677-0-0-0-121.html"&gt;Best Practices and Performance Paper from HP&lt;/A&gt; - HP Solutions Alliance Engineering (SAE) labs runs tests to ascertain performance on newly released HP server and storage technologies and also on new versions of Microsoft software that form part of the solution. This page provides technical papers having actual test results. Below is the list of different performance related papers: 
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA1-1793ENW&amp;amp;cc=us&amp;amp;lc=en" mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA1-1793ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;Microsoft Office SharePoint Server 2007 on HP ProLiant Servers - Performance Summary&lt;/A&gt; – provides guidance, example configurations and interesting facts include the load test results for various workloads on 12 different servers having various combination of&amp;nbsp; Processors - single core and dual core, AMD and Intel, x86 and x64. You can read a quick summary about this paper in one of &lt;A href="http://sanjaynarang.wordpress.com/2007/05/15/moss-2007-capacity-planning-performance-summary-optimal-topologies-and-hp-servers/" target=_blank mce_href="http://sanjaynarang.wordpress.com/2007/05/15/moss-2007-capacity-planning-performance-summary-optimal-topologies-and-hp-servers/"&gt;my previous post&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-2981ENW&amp;amp;cc=us&amp;amp;lc=en" mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-2981ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;Microsoft Office SharePoint Server 2007 with Windows 2008 and SQL Server 2008 on HP servers and storage technologies&lt;/A&gt; - describes the performance differences observed when comparing MOSS running on Windows Server 2008 and SQL Server 2008 versus current deployments running Windows Server 2003 and SQL Server 2005. &lt;/LI&gt;
&lt;LI&gt;Results from low cost single server MOSS setups on &lt;A title="Utilizing the HP ProLiant ML350 G5 server with Microsoft Office SharePoint Server 2007 and Windows Server 2008 for small businesses" href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA1-9705ENW&amp;amp;cc=us&amp;amp;lc=en" target=_blank mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA1-9705ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;Intel&lt;/A&gt; and &lt;A title="Utilizing Microsoft Office SharePoint Server 2007 for Small Businesses with the HP ProLiant DL385 G2 server" href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA1-9173ENW&amp;amp;cc=us&amp;amp;lc=en" target=_blank mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA1-9173ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;AMD&lt;/A&gt; based servers &lt;/LI&gt;
&lt;LI&gt;Results from Virtualized Hyper-V based setups on &lt;A title="Utilizing the HP ProLiant DL580 G5 Server and Hyper-V to virtualize a Microsoft Office SharePoint Server 2007 environment" href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-1789ENW&amp;amp;cc=us&amp;amp;lc=en" target=_blank mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-1789ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;Intel&lt;/A&gt; (&lt;A title="Using the HP ProLiant DL580 G5 and DL380 G5 servers to virtualize a Microsoft Office SharePoint Server 2007 farm" href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-3703ENW&amp;amp;cc=us&amp;amp;lc=en" target=_blank mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-3703ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;different servers&lt;/A&gt;) and &lt;A title="Utilizing the HP ProLiant DL585 G5 Server and Hyper-V to virtualize a Microsoft Office SharePoint Server 2007 environment" href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-1878ENW&amp;amp;cc=us&amp;amp;lc=en" target=_blank mce_href="http://h20195.www2.hp.com/V2/GetDocument.aspx?docname=4AA2-1878ENW&amp;amp;cc=us&amp;amp;lc=en"&gt;AMD&lt;/A&gt; based servers &lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkId=91696&amp;amp;clcid=0x409" target=_blank mce_href="http://go.microsoft.com/fwlink/?LinkId=91696&amp;amp;clcid=0x409"&gt;Intel Performance Testing of Windows SharePoint Services&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Testing Tools&lt;/H2&gt;
&lt;P&gt;This section provides links to the tools that helps in the load testing. &lt;/P&gt;
&lt;P&gt;Tools to generate load and test data: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/teamsystem/dd408381.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/teamsystem/dd408381.aspx"&gt;VSTS 2008 Test Edition&lt;/A&gt; – &lt;A href="http://www.combined-knowledge.com/" target=_blank mce_href="http://www.combined-knowledge.com/"&gt;Combined Knowledge&lt;/A&gt; has published a detailed &lt;A title="How to Configure a Stress Test Project for Microsoft Office SharePoint Server 2007 using Visual Studio Team Suite 2008." href="http://www.combined-knowledge.com/Downloads/HowToConfigStressTestProjectForMOSS07usingVS2008TS.pdf" target=_blank mce_href="http://www.combined-knowledge.com/Downloads/HowToConfigStressTestProjectForMOSS07usingVS2008TS.pdf"&gt;“How To” guide&lt;/A&gt; for configuring a stress testing project for MOSS 2007 using VSTS 2008. &lt;A href="http://www.helloitsliam.com/" mce_href="http://www.helloitsliam.com/"&gt;Liam Cleary [SharePoint MVP] &lt;/A&gt;has published some good posts on how to create and run a &lt;A title="MOSS2007 Testing Using Visual Studio Team System 2008" href="http://www.helloitsliam.com/archive/2008/03/10/moss2007-testing-using-visual-studio-team-system-2008.aspx" target=_blank mce_href="http://www.helloitsliam.com/archive/2008/03/10/moss2007-testing-using-visual-studio-team-system-2008.aspx"&gt;web test&lt;/A&gt; and &lt;A title="MOSS2007 – Visual Studio 2008 Testing (Load Test)" href="http://www.helloitsliam.com/archive/2008/04/14/moss2007-–-visual-studio-2008-testing-load-test.aspx" target=_blank mce_href="http://www.helloitsliam.com/archive/2008/04/14/moss2007-–-visual-studio-2008-testing-load-test.aspx"&gt;load test&lt;/A&gt; on SharePoint with VSTS 2008. If you want to learn more about VSTS 2008 load testing &lt;A title="Ed Glas's blog on VSTS load testing" href="http://blogs.msdn.com/edglas/" target=_blank mce_href="http://blogs.msdn.com/edglas/"&gt;Ed Glas&lt;/A&gt;’s blog is very good resource and &lt;A href="http://blogs.msdn.com/edglas/archive/2009/03/06/updated-load-test-links-for-march.aspx" target=_blank mce_href="http://blogs.msdn.com/edglas/archive/2009/03/06/updated-load-test-links-for-march.aspx"&gt;this blog post&lt;/A&gt; provides quite a few links to start. &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/sptdatapop" target=_blank mce_href="http://www.codeplex.com/sptdatapop"&gt;SharePoint 2007 Test Data Population Tool and the test data&lt;/A&gt; - populates data for testing SharePoint deployments. Description on How to use the tool: &lt;A href="http://technet.microsoft.com/en-us/library/cc288064.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc288064.aspx"&gt;Tools for performance and capacity planning (Windows SharePoint Services)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1466&amp;amp;g=6" target=_blank mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1466&amp;amp;g=6"&gt;Web Capacity Analysis Tool (WCAT)&lt;/A&gt; – In case you don’t have VSTS, and looking for free tool, you can use WCAT. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Browsers Add-Ons: There are many good tools (mostly free) that integrate with your browser to analyze each and every activity happening through your browser. You can use these tools for tuning the performance of a web site by measuring parameters such as download times, caching or the number of network round trips. [Thanks to &lt;A title="Ed Glas's blog on VSTS load testing" href="http://blogs.msdn.com/edglas/" target=_blank mce_href="http://blogs.msdn.com/edglas/"&gt;Ed Glas&lt;/A&gt; for suggesting some of these tools.]&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.fiddlertool.com/" target=_blank mce_href="http://www.fiddlertool.com/"&gt;Fiddler&lt;/A&gt; – a very handy and light weight tool that can provide quick overview of you web site performance. It can also records scripts that you can use in VSTS. &lt;A title="Fiddler PowerToy - Part 2: HTTP Performance" href="http://msdn.microsoft.com/en-us/library/bb250442.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb250442.aspx"&gt;This MSDN article&lt;/A&gt; provides detailed information on how Fiddler can be used for performance tuning.&lt;/LI&gt;
&lt;LI&gt;&lt;A title="Microsoft neXpert Performance Analysis Plugin" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5975DA52-8CE6-48BD-9B3C-756A625024BB&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=5975DA52-8CE6-48BD-9B3C-756A625024BB&amp;amp;displaylang=en"&gt;neXpert&lt;/A&gt; - an add-on to Fiddler which automates the classic performance best practice checks and produces a HTML report on the issues found in a Fiddler capture. Also adds the ability to insert step markers in Fiddler sessions to associate network objects together (create transactions). Check out more &lt;A href="http://blogs.msdn.com/nexpert/" target=_blank mce_href="http://blogs.msdn.com/nexpert/"&gt;here&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.httpwatch.com/" target=_blank mce_href="http://www.httpwatch.com/"&gt;HttpWatch&lt;/A&gt; - an HTTP viewer and debugger. Available in commercial as well as free variants.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;A title="With Firebug, you can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page." href="http://getfirebug.com/" target=_blank mce_href="http://getfirebug.com/"&gt;FireBug&lt;/A&gt; – provides many web development tools. Integrates only with FireFox &lt;/LI&gt;
&lt;LI&gt;&lt;A title="YSlow is a Firefox add-on integrated with the popular Firebug web development tool." href="http://developer.yahoo.com/yslow/" target=_blank mce_href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/A&gt; - analyzes web pages and tells you why they're slow based on the &lt;A href="http://developer.yahoo.com/performance/index.html#rules" mce_href="http://developer.yahoo.com/performance/index.html#rules"&gt;rules for high performance web sites&lt;/A&gt;. Integrates only with FireFox &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;At times, you need to focus on end-user response time. As it is difficult to simulate real life network bandwidth, it becomes difficult to test, how your application perform for end users. The following tools help you to find end-user experience&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=119F3477-DCED-41E3-A0E7-D8B5CAE893A3&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=119F3477-DCED-41E3-A0E7-D8B5CAE893A3&amp;amp;displaylang=en"&gt;Visual Round Trip Analyzer&lt;/A&gt; - Web page performance visualizer and analyzer tool. You can find &lt;A title="Ed Glas's blog on VSTS load testing" href="http://blogs.msdn.com/edglas/" target=_blank mce_href="http://blogs.msdn.com/edglas/"&gt;Ed Glas&lt;/A&gt;’s &lt;A title="Visual Round Trip Analyzer released" href="http://blogs.msdn.com/edglas/archive/2008/11/03/visual-round-trip-analyzer-released.aspx" target=_blank mce_href="http://blogs.msdn.com/edglas/archive/2008/11/03/visual-round-trip-analyzer-released.aspx"&gt;blog post&lt;/A&gt; introducing this tool and &lt;A title="12 Steps To Faster Web Pages With Visual Round Trip Analyzer" href="http://msdn.microsoft.com/en-us/magazine/dd188562.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/magazine/dd188562.aspx"&gt;detailed article&lt;/A&gt; on using the tool. &lt;/LI&gt;
&lt;LI&gt;&lt;A title="Where web sites go to get FAST!" href="http://www.webpagetest.org/" target=_blank mce_href="http://www.webpagetest.org/"&gt;webPageTest&lt;/A&gt; -&amp;nbsp;&amp;nbsp; webPageTest is a free over-the-web tool for performance testing a page from either Dulles, VA, USA or Wellington New Zealand. Pagetest allows you to provide the URL of a webpage to be tested provides a waterfall of your page load performance as well as a comparison against an optimization checklist. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;There are other tools available for sizing and capacity planning also such as &lt;A href="http://h71019.www7.hp.com/ActiveAnswers/cache/548230-0-0-0-121.html" mce_href="http://h71019.www7.hp.com/ActiveAnswers/cache/548230-0-0-0-121.html"&gt;HP ProLiant Sizer for Microsoft Office SharePoint Server 2007&lt;/A&gt; and &lt;A href="http://technet.microsoft.com/en-us/library/bb961988.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/bb961988.aspx"&gt;SharePoint Capacity Planning Tool&lt;/A&gt; from Microsoft&lt;/P&gt;
&lt;H2&gt;Useful Blogs, Third Party Articles&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/joelo/archive/2007/01/16/good-list-of-performance-counters.aspx" target=_blank mce_href="http://blogs.msdn.com/joelo/archive/2007/01/16/good-list-of-performance-counters.aspx"&gt;Joel Oleson: Good List of Performance Counters (MOSS 2007)&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A title=http://blogs.msdn.com/ketaanhs/archive/2008/08/12/performance-testing-and-performance-counters-for-sharepoint-2007-moss.aspx href="http://blogs.msdn.com/ketaanhs/archive/2008/08/12/performance-testing-and-performance-counters-for-sharepoint-2007-moss.aspx" target=_blank mce_href="http://blogs.msdn.com/ketaanhs/archive/2008/08/12/performance-testing-and-performance-counters-for-sharepoint-2007-moss.aspx"&gt;Performance testing and Performance counters for Sharepoint 2007 (MOSS)&lt;/A&gt; - You won't only find the list of counters, but also a guideline as well as explanation for the same.&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/shivajin/" target=_blank mce_href="http://blogs.msdn.com/shivajin/"&gt;Shivajin's blog&lt;/A&gt;&amp;nbsp;- Shivajin has been writing a series of useful blog posts on performance testing, especially on Info Path Forms Services&amp;nbsp;such as &lt;A title="How to Parameterize Browser enabled InfoPath forms" href="http://blogs.msdn.com/shivajin/archive/2009/05/12/how-to-parameterize-browser-enabled-infopath-forms.aspx" target=_blank mce_href="http://blogs.msdn.com/shivajin/archive/2009/05/12/how-to-parameterize-browser-enabled-infopath-forms.aspx"&gt;this one&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/wbaer/archive/2007/08/02/stress-testing-microsoft-office-sharepoint-server-2007-windows-sharepoint-services-3-0.aspx" target=_blank mce_href="http://blogs.technet.com/wbaer/archive/2007/08/02/stress-testing-microsoft-office-sharepoint-server-2007-windows-sharepoint-services-3-0.aspx"&gt;Bill Baer: Stress Testing Microsoft Office SharePoint Server 2007/Windows SharePoint Services 3.0&lt;/A&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.wssdemo.com/pages/iframe.aspx?url=http://www.wssdemo.com/Shared%20Documents/MeasureSharePointPerformance.pdf" target=_blank mce_href="http://www.wssdemo.com/pages/iframe.aspx?url=http://www.wssdemo.com/Shared%20Documents/MeasureSharePointPerformance.pdf"&gt;Using tool Runtime Optimizer to measure SharePoint performance and setting page load goals&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://update.webperformance.com/library/casestudies/sharepoint/SharePointLoadTesting.pdf" target=_blank mce_href="http://update.webperformance.com/library/casestudies/sharepoint/SharePointLoadTesting.pdf"&gt;Case study on load testing &amp;amp; Tuning to improve SharePoint performance using WebPerformance tools&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;ASP.Net performance testing and Analysis&lt;/H2&gt;
&lt;P&gt;The following links provide information on performance testing of ASP.net based web sites. Everything you wanted to know such as how to setup Performance Monitor, what counters to analyze, what should be threshold value of the counters, what to do if some counters are overshooting the threshold – you’ll get here. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://technet2.microsoft.com/windowsserver/en/library/ee7eec2e-6cd1-42ba-8bbc-58ab381a6ec81033.mspx?mfr=true" target=_blank mce_href="http://technet2.microsoft.com/windowsserver/en/library/ee7eec2e-6cd1-42ba-8bbc-58ab381a6ec81033.mspx?mfr=true"&gt;Overview of ASP.NET Performance Monitoring&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/PerfTestingGuide" target=_blank mce_href="http://www.codeplex.com/PerfTestingGuide"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms972959.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms972959.aspx"&gt;ASP.NET Performance Monitoring, and When to Alert Administrators&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998596.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998596.aspx"&gt;Checklist: ASP.NET Performance&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998579.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998579.aspx"&gt;Chapter 15 — Measuring .NET Application Performance&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998581.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998581.aspx"&gt;Chapter 16 — Testing .NET Application Performance&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998583.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998583.aspx"&gt;Chapter 17 — Tuning .NET Application Performance&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;SharePoint Performance Improvements&lt;/H2&gt;
&lt;P&gt;Though this post is focuses on Performance Testing, I’m also providing a few links on Performance improvements, tuning and optimazation&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A title="Plan for performance and capacity (Office SharePoint Server)" href="http://technet.microsoft.com/en-us/library/cc262971.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc262971.aspx"&gt;Technet Performance Page on SharePoint&lt;/A&gt;, which is referred above also has many resources on performance tuning and improvements&lt;/LI&gt;
&lt;LI&gt;&lt;A title="How Microsoft IT Increases Availability and Decreases Rendering Time of SharePoint Sites" href="http://technet.microsoft.com/en-us/library/cc964305.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/library/cc964305.aspx"&gt;Microsoft IT Showcase: SharePoint Performance Optimization&lt;/A&gt; -&amp;nbsp;&amp;nbsp;Very Informative white paper on Microsoft IT identified areas of opportunity for performance optimization, including the back-end SQL Server storage subsystem and front-end IIS servers. &lt;/LI&gt;
&lt;LI&gt;&lt;A title="Improving SharePoint Performance" href="http://technet.microsoft.com/en-us/magazine/dd776503.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/magazine/dd776503.aspx"&gt;Inside SharePoint Improving SharePoint Performance&lt;/A&gt; - Useful article with common issues and their resolution&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb727371.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb727371.aspx"&gt;How to Optimize a SharePoint Server 2007 Web Content Management Site for Performance&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/wbaer/archive/2008/03/01/bill-s-5-min-sharepoint-performance-recommendations.aspx" target=_blank mce_href="http://blogs.technet.com/wbaer/archive/2008/03/01/bill-s-5-min-sharepoint-performance-recommendations.aspx"&gt;Bill's 5-min. SharePoint Performance Recommendations&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/" target=_blank mce_href="http://msdn.microsoft.com/msdnmag/issues/05/01/ASPNETPerformance/"&gt;10 Tips for Writing High-Performance Web Applications&lt;/A&gt;&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms998549.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/ms998549.aspx"&gt;Chapter 6 — Improving ASP.NET Performance&lt;/A&gt;&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Hopefully, you’ll find these useful&lt;/P&gt;
&lt;P&gt;- Sanjay&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9555117" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Resources/default.aspx">Resources</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Load+Testing/default.aspx">Load Testing</category></item><item><title>Find SharePoint object type from URL</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/04/07/find-sharepoint-object-type-from-url.aspx</link><pubDate>Mon, 06 Apr 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9534217</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9534217.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9534217</wfw:commentRss><description>&lt;P&gt;Have you come across a situation, where you get a URL and you need to identify what object type is this: SPSite, SPWeb, SPList, SPFolder, SPListItem or SPFile? I faced this multiple times. Recently, I was working on custom content deployment utility. Customer wanted a command line utility, which was more or less on similar lines that &lt;A href="http://www.sharepointnutsandbolts.com/" mce_href="http://www.sharepointnutsandbolts.com/"&gt;Chris&lt;/A&gt;' &lt;A href="http://www.sharepointnutsandbolts.com/2009/03/command-line-support-for-content.html" mce_href="http://www.sharepointnutsandbolts.com/2009/03/command-line-support-for-content.html"&gt;command line tool&lt;/A&gt; for content deployment wizard. However, there wasn't any associate GUI. Users can copy any URL from the browser and pass it on to the command line tool for export. It's upto the tool to figure out what kind of object it is. Initially it sounded simple: Just create an SPSite object from passed url, compare the passed Url and Site or web or list URL, whichever matches that's the object type. But it wasn't so simple. Users used Mouse' right click option to copy shortcut to any link and provided the same to command line. These URLs can be of any form like this: &lt;/P&gt;
&lt;P&gt;Folder in doc lib in query string format: &lt;A href="http://moss.litwareinc.com/Documents/Forms/AllItems.aspx?RootFolder=%2fDocuments%2fFolderInLibrary&amp;amp;FolderCTID=&amp;amp;View=%7b6F7E9FC7%2dC64B%2d4993%2dBB7D%2dD3FBFCAA3C53%7d" mce_href="http://moss.litwareinc.com/Documents/Forms/AllItems.aspx?RootFolder=%2fDocuments%2fFolderInLibrary&amp;amp;FolderCTID=&amp;amp;View=%7b6F7E9FC7%2dC64B%2d4993%2dBB7D%2dD3FBFCAA3C53%7d"&gt;http://moss.litwareinc.com/Documents/Forms/AllItems.aspx?RootFolder=%2fDocuments%2fFolderInLibrary&amp;amp;FolderCTID=&amp;amp;View=%7b6F7E9FC7%2dC64B%2d4993%2dBB7D%2dD3FBFCAA3C53%7d&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Folder in doc lib in list item format: &lt;A href="http://moss.litwareinc.com/Documents/FolderInLibrary" mce_href="http://moss.litwareinc.com/Documents/FolderInLibrary"&gt;http://moss.litwareinc.com/Documents/FolderInLibrary&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Document Library: &lt;A href="http://moss.litwareinc.com/Documents/" mce_href="http://moss.litwareinc.com/Documents/"&gt;http://moss.litwareinc.com/Documents/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;List Item &lt;A href="http://moss.litwareinc.com/Lists/Tasks/DispForm.aspx?ID=2&amp;amp;RootFolder=%2fLists%2fTasks%2fFolderInTasksList" mce_href="http://moss.litwareinc.com/Lists/Tasks/DispForm.aspx?ID=2&amp;amp;RootFolder=%2fLists%2fTasks%2fFolderInTasksList"&gt;http://moss.litwareinc.com/Lists/Tasks/DispForm.aspx?ID=2&amp;amp;RootFolder=%2fLists%2fTasks%2fFolderInTasksList&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The problem is even more when the URL includes form pages such as AllItem.aspx or DispForm.aspx. By default, SharePoint returns SPFile for form pages, but actually they can point to a folder or a list item. So I wrote a utility function. The code is provided below, which is self explanatory. &lt;/P&gt;&lt;CODE style="FONT-SIZE: 12px"&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;System&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;System.Collections.Generic&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;System.Collections.Specialized&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;System.Text&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;System.Web&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Microsoft.SharePoint&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Microsoft.SharePoint.Administration&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Microsoft.SharePoint.Deployment&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;namespace &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SanjayNarang.Sharepoint.Utilities&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;class &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SanjayMossUtilities&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType GetObjectTypeFromURL&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;passedUrl&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;out Guid objectGuid&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPDeploymentObjectType objType &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.Invalid&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Guid.Empty&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPSite site &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPWeb web &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPList list &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;object &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;siteRelativeUrl &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;NameValueCollection queryParams &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;GetModifiedUrl&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;passedUrl&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;out queryParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;site &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= new &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPSite&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;site.Url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringComparison.OrdinalIgnoreCase&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;site.ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.Site&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;web &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;site.OpenWeb&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web.Url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringComparison.OrdinalIgnoreCase&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web.ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.Web&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;siteRelativeUrl &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.TrimStart&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web.Url.ToCharArray&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;list &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web.GetList&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;((&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;list&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;) &amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;amp&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;amp&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;siteRelativeUrl.Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;list.RootFolder.Url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringComparison.OrdinalIgnoreCase&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;list.ID&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.List&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// if we are here, it means URL is none of these: &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// site, web, list&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// So, it can be either file, folder or a list item.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Finding that is intricated.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web.GetObject&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;is &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPFile&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Generally, we get here for Forms Pages, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// such as DispForm.aspx, AllItems.aspx&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// so, a SPFile object could be a list item Or&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// a folder in a list or a Folder&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Pages in root of the web are also returned as &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// SPFiles e.g. http://moss/default.aspx&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// The URLs that point to a file in doc lib are &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// returned as SPListItem by GetObject method&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPFile file &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj as SPFile&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// The logic to identify folder or item has&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// been explained in ValidateQueryString&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;idValue &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams["ID"]&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;folderValue &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams["RootFolder"]&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;idValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPListItem item &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;list.GetItemById&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Parse&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;idValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;item.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.ListItem&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;folderValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPFolder folder &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web.GetFolder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;folderValue&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;folder.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.Folder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Deployyment Object Type is: Invalid, so no need&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// to do anything&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;file.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.File&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;is &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPFolder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPFolder folder &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj as SPFolder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;folder.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.Folder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;is &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPListItem&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SPListItem item &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;obj as SPListItem&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// item can contain a folder of file also. e.g. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// http://moss.litwareinc.com/Documents/folderinlibrary&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// http://moss.litwareinc.com/Documents/FolderInLibrary/File2.doc&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;item.Folder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;item.Folder.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.Folder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;item.File&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;item.File.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.File&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectGuid &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;item.UniqueId&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;SPDeploymentObjectType.ListItem&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;finally&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;web &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;web.Dispose&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;site &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;!= &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;site.Dispose&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;objType&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;GetModifiedUrl&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;out NameValueCollection queryParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;modUrl &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;; &lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;//modified url&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;querystring &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= string&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Empty&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= null&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// if it's a site or web or folder, user can pass '/' at &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// the end, which we need to trim&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.EndsWith&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"/"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modUrl &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.TrimEnd&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;new char&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;[] { '/' });&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// we need to get the URL without query string as it creates&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// problem getting the parent folder&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.Contains&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"?"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;int &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;tmp &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.IndexOf&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"?"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;modUrl &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.Substring&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;tmp&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;querystring &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;url.Substring&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;tmp &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;HttpUtility.ParseQueryString&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;querystring&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// apply custom rules&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;ValidateQueryString&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;modUrl&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private void &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;ValidateQueryString&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;NameValueCollection queryParams&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// when there's query string in the URL, the URL can point to a &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// list item (in a list) or a folder.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// For example if an item is a folder &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 'FolderInTasksList' the URL of item would look like this&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// http://moss.litwareinc.com/Lists/Tasks/DispForm.aspx?ID=2&amp;amp;RootFolder=/Lists/Tasks/FolderInTasksList OR&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// http://moss.litwareinc.com/Lists/Tasks/DispForm.aspx?ID=2&amp;amp;RootFolder=%2fLists%2fTasks%2fFolderInTasksList&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// And if we need Url of the folder, it would be like this:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// http://moss.litwareinc.com/Lists/Tasks/AllItems.aspx?RootFolder=%2fLists%2fTasks%2fFolderInTasksList&amp;amp;FolderCTID=&amp;amp;View=%7bD8E1251D%2d829B%2d4FCE%2d9127%2d5E4FC6E6A5C4%7d&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// From the above two examples, I'm applying the following &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// rules on the query string &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 1. It can contain only these keys: ID, RootFolder, FolderCTID, View&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If there's any other key, i would treat that as invalid query string&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 2. ID and RootFolder should never be empty&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;otherwise, raise exception here rather than hitting that later&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 3. the query string has to contain at least one of the following&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a. ID, b. RootFolder&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build a string collection with possible values. For comparison, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// we'll use lower case only&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringCollection strColl &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= new &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringCollection&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;strColl.Add&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"ID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.ToLower&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;strColl.Add&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"RootFolder"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.ToLower&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;strColl.Add&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"FolderCTID"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.ToLower&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;strColl.Add&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"View"&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.ToLower&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;());&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Apply the Rules&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;bool &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;hasID &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= false&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;bool &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;hasRootFolder &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= false&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Console.WriteLine&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;foreach &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;string &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;str &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;in &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams.AllKeys&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// can be used for debugging&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Console.WriteLine("Name: " + str + " | Value: " + queryParams[str]);&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Rule 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(!(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;strColl.Contains&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;str.ToLower&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;())))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw new &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;ArgumentException&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"Invalid argument in passed query string"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Rule 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;str.Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"id"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringComparison.OrdinalIgnoreCase&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hasID &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= true&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams[str].Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Empty&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw new &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;ArgumentException&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"Query string parameter \"" + str + "\" can not be empty."&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Rule 2&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;str.Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"rootfolder"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;StringComparison.OrdinalIgnoreCase&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hasRootFolder &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;= true&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;queryParams[str].Equals&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;.Empty&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw new &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;ArgumentException&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"Query string parameter \"" + str + "\" can not be empty."&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: green"&gt;// Rule 3&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;Console.WriteLine&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(!(&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;hasID &lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;|| &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;hasRootFolder&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;throw new &lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;ArgumentException&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: darkred"&gt;"Query string must have at least one parameter from these: ID and RootFolder"&lt;/SPAN&gt;&lt;SPAN style="COLOR: gray"&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;BR&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9534217" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Object+Model/default.aspx">Object Model</category></item><item><title>Custom Field Control not allowing more than 255 characters</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/03/21/custom-field-control-not-allowing-more-than-255-characters.aspx</link><pubDate>Sat, 21 Mar 2009 06:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9494564</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9494564.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9494564</wfw:commentRss><description>&lt;P&gt;Have you faced the issue of getting limited to 255 characters when working with your custom field controls? Especially, when you are inheriting from a field such as SPFieldMultiColumn! When you save an item having custom field control with more than 255 characters, you can get this type of message: &lt;/P&gt;
&lt;HR&gt;
&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #080808"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-SIZE: 13pt"&gt;&lt;EM&gt;Invalid text value&lt;BR&gt;&lt;BR&gt;A text field contains invalid data. Please check the value and try again.&lt;/EM&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt"&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;SPAN style="FONT-FAMILY: Arial; COLOR: #080808; FONT-SIZE: 9pt"&gt;&lt;STRONG&gt;Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. &lt;BR&gt;&lt;BR&gt;Exception Details: System.Runtime.InteropServices.COMException: Invalid text value&lt;BR&gt;&lt;BR&gt;A text field contains invalid data. Please check the value and try again.&lt;BR&gt;&lt;BR&gt;Source Error: &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;SPAN style="COLOR: #080808"&gt;&lt;SPAN style="FONT-FAMILY: Courier New; FONT-SIZE: 10pt"&gt;An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Arial; FONT-SIZE: 9pt"&gt;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="COLOR: #080808; FONT-SIZE: 9pt"&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Verdana"&gt;Stack Trace:&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Arial"&gt; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;
&lt;HR&gt;

&lt;P style="BACKGROUND: white"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; COLOR: #080808; FONT-SIZE: 12pt"&gt;&lt;/SPAN&gt;It's really disturbing that you chose MultiColumn field control because you wanted to store multiple values and the combined length of values in all the columns cannot exceed 255 characters! &lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;The issue is generally that you have not chosen correct "ParentType" in fldtypes.xml file. In many samples available on internet, the "ParentType" is generally "Text", which is designed only for 255 characters. So even when in your code, you have inherited from a class other than SPFieldText e.g. SPFieldMultiColumn, the basic properties are governed by what ParentType you have chosen in the xml file. For example, for SPFieldMultiColumn this value should be as given below: &lt;/P&gt;
&lt;P style="BACKGROUND: white"&gt;&lt;SPAN style="FONT-FAMILY: Verdana; FONT-SIZE: 10pt"&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #990000"&gt;Field Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;ParentType&lt;/STRONG&gt;&lt;SPAN style="COLOR: blue"&gt;"&amp;gt;&lt;/SPAN&gt;&lt;STRONG&gt;MultiColumn&lt;/STRONG&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #990000"&gt;Field&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;Generally, what value you should choose in ParentType can be referred from this page in SDK: &lt;A href="http://msdn.microsoft.com/en-us/library/ms437580.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms437580.aspx"&gt;Field Element (List - Definition)&lt;/A&gt; Interestingly, the above URL mentions ParentType for SPFieldMultiColumn as "Note". Both works as MultiColumn also rolls up to "Note" which is Parent Type for many field controls. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9494564" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Custom+Field+Control/default.aspx">Custom Field Control</category></item><item><title>Handling Paging and Total Results count in SharePoint custom results page</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/02/20/handling-paging-and-total-results-count-in-sharepoint-custom-results-page.aspx</link><pubDate>Fri, 20 Feb 2009 21:40:51 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9436406</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9436406.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9436406</wfw:commentRss><description>&lt;p&gt;If you are developing a custom result page, some of the key requirements (in addition to showing relevant results) that are common across many types of projects are:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Showing the total number of search results based on the submitted keyword or query so that you can show some statistics like Results 1-10 of 572
&lt;/li&gt;&lt;li&gt;Showing links for page numbers to move backwards and forwards (e.g.  &amp;lt; Back, 1, 2, 3, 4, 5, Next &amp;gt;). Getting the page count correct is again dependent of getting total results count correct. 
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The SharePoint Object Model (OM) provides two types of classes to query against it content: &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.office.server.search.query.keywordquery"&gt;KeywordQuery&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.office.server.search.query.fulltextsqlquery.aspx"&gt;FullTextSqlQuery&lt;/a&gt;. These queries have properties &lt;strong&gt;StartRow&lt;/strong&gt; and &lt;strong&gt;RowLimit&lt;/strong&gt;. Both of these queries get us result in &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.resulttable.aspx"&gt;ResultTable&lt;/a&gt; class and this class has one property TotalRows. These properties are  defined below:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.query.startrow.aspx"&gt;StartRow&lt;/a&gt;: Gets or sets first row included in the search results.
&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.query.rowlimit.aspx"&gt;RowLimit&lt;/a&gt;: Gets or sets the maximum number of rows returned in the search results.
&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.resulttable.totalrows.aspx"&gt;TotalRows&lt;/a&gt;:  Gets the number of rows in the search query result table. 
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;With the above understanding, isn't it too simple to implement to get both of the points – 1 and 2 stated above. Basically, your paging would be like this .. Result &amp;lt;StartRow&amp;gt; to &amp;lt;StartRow + RowLimit&amp;gt; of &amp;lt;TotalRows&amp;gt;. And based on TotalRows, you can show the links for pages to be displayed.
&lt;/p&gt;&lt;p&gt;However, this is not that simple. It's very difficult for any search engine (including web search engines such as Live or Google) to get the exact number of total results found as it's very time consuming scheme. So, most search engines (including MOSS) perform only an "estimate" to provide total number of results. Hence, the value of TotalRows property can change for the same keyword. The value is more accurate when the StartRow is towards the end of search results. Hence any logic to display links for search pages can fail here. I recommend the following approach here:
&lt;/p&gt;&lt;p&gt;The links for "page" numbers may get unstable. For example, let us say, you got total rows as 100 and you always show links for page 1, 2, 3, 4 and 5. But let us say, actual result is 27 only. Which would mean if user clicks on page "4" , you'll fire a query for item 31 to 40 and you'll get zero results. At this point rather than showing page with zero results, do the following:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Get the Total rows from the same result table. This time it should give the correct value (27 as it is close to end). Confirm it's correctness by checking the value of property &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.office.server.search.query.resulttable.istotalrowsexact.aspx"&gt;IsTotalRowsExact&lt;/a&gt;. 
&lt;/li&gt;&lt;li&gt;If it's correct, then just show the last page which is 3 (and make links for page, 4, 5 and "Next" as invisible)
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Though, the approach seems "crude" , but it's one of the most efficient and least invasive way to achieve this functionality. Even internet search engines such as Live and Google employ the same technique. 
&lt;/p&gt;&lt;p&gt;There are some other approach that you can use to get the numbering correct as provided in the following blogs:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt; To round  the total results number off to some value (for consistency): Results count and custom paging [ &lt;a href="http://blogs.pointbridge.com/Blogs/dupont_thomas/Pages/Post.aspx?_ID=7"&gt;http://blogs.pointbridge.com/Blogs/dupont_thomas/Pages/Post.aspx?_ID=7&lt;/a&gt; ] 
&lt;/li&gt;&lt;li&gt;Use Query.TotalRowsExactMinimum to show how many page numbers to show from current page: Understanding Total Hits &amp;amp; Paging in the MOSS 2007 Search API (&lt;a href="http://sharepointsearch.com/cs/blogs/enterprisesearch/archive/2008/05/22/understanding-total-hits-amp-paging-in-the-moss-2007-search-api.aspx"&gt;http://sharepointsearch.com/cs/blogs/enterprisesearch/archive/2008/05/22/understanding-total-hits-amp-paging-in-the-moss-2007-search-api.aspx&lt;/a&gt; )  
&lt;/li&gt;&lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9436406" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Search/default.aspx">Search</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Paging/default.aspx">Paging</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Custom/default.aspx">Custom</category></item><item><title>Relationships between Moderation (Approval) status, Scheduling, Versions and Workflows</title><link>http://blogs.msdn.com/sanjaynarang/archive/2009/02/19/relationships-between-moderation-approval-status-scheduling-versions-and-workflows.aspx</link><pubDate>Thu, 19 Feb 2009 09:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9433372</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9433372.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9433372</wfw:commentRss><description>&lt;p&gt;Recently, while working on a WCM project, I realized that many developers don't know that various properties of a list item (especially document library) are inter dependent and may change based on each other's values. These properties are: Moderation (Approval) status, Scheduling status, Versions Numbers. So I thought, I'd put up this write-up that would demystify some of the underlying concepts.
&lt;/p&gt;&lt;p style="margin-left: 22pt"&gt;
 &lt;/p&gt;&lt;h3&gt;FACTS: 
&lt;/h3&gt;&lt;p&gt;Before starting on this let's get some facts clear:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Item Scheduling (ability to schedule or expire an item) is ONLY available on document libraries. You cannot enable it on lists.
&lt;/li&gt;&lt;li&gt;SharePoint does not rely on Scheduling Start Date (or Publish date) and Scheduling End Date (or Expiry Date) to find if an item needs to be shown or not to unauthorized users. In fact, it relies on "Moderation Status" (the value shown in "Approval Status" field). When you enable Item Scheduling on a document library, SharePoint makes use of event receivers and timer job to change the moderation status as per Scheduling Start and End Dates.
&lt;/li&gt;&lt;li&gt;&lt;div&gt;This is what happens to moderation status as per Scheduling Start and End Dates.
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Before Scheduling Start Date: if someone "approves" an item (from different options available, more on that below), the moderation status changes to "Scheduled". 
&lt;/li&gt;&lt;li&gt;On Scheduling Start Date: if moderation status was "Scheduled" earlier, it changes to "Approved". Version number is changed from Minor to next Major. No change happens if moderation status was "Draft" or "Pending" earlier.
&lt;/li&gt;&lt;li&gt;On Scheduling End Date: if moderation status was "Approved" earlier, it changes to "Draft". Version number is changed from Major to previous Minor
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;If you are setting the moderation status manually (through Object Model) from a custom application or Workflow, you need NOT worry about checking Scheduling Start and End Dates and  change the status to "Scheduled" or "Approved" according to these dates. You can always, change the status to Approved (as shown below). SharePoint would ensure that it gets the correct status as per Scheduling Dates.
&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:Courier New"&gt;Item.ModerationInformation.Status = SPModerationStatusType.Approved    
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;APPROVING AND PUBLISHING ITEMS
&lt;/h3&gt;&lt;p&gt;SharePoint provides multiple ways to approve or publish items that can vary based on item's moderation status and version numbers. This section explains that. Note that the following explanation is only for "Pages" library in "Publishing Sites". However, the behavior should be same for other document libraries also, though Page Editing Toolbar would not be available.
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;The options to approve based on moderation status are:
&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Item status - "Draft" 
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Page Editing Toolbar: two buttons are visible: Submit For Approval, Publish
&lt;/li&gt;&lt;li&gt;ECB menu: "approve/reject" is not available. Instead, "Publish a Major Version" is available
&lt;/li&gt;&lt;li&gt;&lt;div&gt;"View item properties" page: "Approve/Reject" button is available, which takes to the approval page. But on the approval page only the following two options are available: 
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Draft
&lt;/li&gt;&lt;li&gt;Pending 
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Item status - "Pending"
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Page Editing Toolbar: two buttons are visible: Approve, Reject - these button change the status directly
&lt;/li&gt;&lt;li&gt;&lt;div&gt;Context menu: approve/reject menu is available and takes to approval page with all three options: 
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Approved 
&lt;/li&gt;&lt;li&gt;Rejected
&lt;/li&gt;&lt;li&gt;Pending  
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;The behavior of various options is described below. To make it simpler to understand, I've provided the following categories for each behavior:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Visibility: where and when "this" option is available
&lt;/li&gt;&lt;li&gt;Versions: how does "this" option impacts version numbers
&lt;/li&gt;&lt;li&gt;Moderation: how does "this" option impacts moderation status
&lt;/li&gt;&lt;li&gt;Scheduling: how does "this" option impacts scheduling
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;The behavior for options is:
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;Submit for Approval
&lt;/strong&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Visibility: Appears when the approval status is "draft"
&lt;/li&gt;&lt;li&gt;Versions: Checks-in the current minor version 
&lt;/li&gt;&lt;li&gt;Moderation: Changes the approval status to "Pending"
&lt;/li&gt;&lt;li&gt;Scheduling: If item is schedule and scheduled start time comes before item is approved, nothing happens
&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; 
 &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;Publish 
&lt;/strong&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Visibility:  Appears on Page Editing Toolbar when the approval status is "draft", version could be checked-in or out
&lt;/li&gt;&lt;li&gt;&lt;div&gt;If the item Scheduled Start Date is in PAST (item is active)
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Versions:  Checks-in (if checked out) and changes the current "Minor Version"   (e.g. 4.1) to next  "Major version"  (e.g. 5.0)
&lt;/li&gt;&lt;li&gt;Moderation: Changes the approval status to "Approved"
&lt;/li&gt;&lt;li&gt;Scheduling (when scheduled start time comes): NA
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;If the item Scheduled Start Date is in FUTURE (item is not active)
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Versions:   Checks-in (if checked out), keeps the current "Minor Version"
&lt;/li&gt;&lt;li&gt;Moderation: Changes the approval status to "Scheduled"
&lt;/li&gt;&lt;li&gt;&lt;div&gt;Scheduling (when scheduled start time comes): 
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Changes the approval status to "Approved"
&lt;/li&gt;&lt;li&gt;&lt;div&gt;Converts the latest Minor version to Next Major version
&lt;/div&gt;&lt;p&gt;
 &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;Publish a Major Version&lt;/strong&gt; (It's not same as Publish on Page Editing Toolbar)
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Visibility: In ECB Menu, only when the status is  draft and item is checked-in
&lt;/li&gt;&lt;li&gt;Versions: Interestingly, this does not change version. It changes only moderation status. If item version is 0.1, it remains 0.1 even afterwords.
&lt;/li&gt;&lt;li&gt;Moderation: Changes the approval status to "Pending"
&lt;/li&gt;&lt;li&gt;Scheduling (when scheduled start time comes): No Change
&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;HTH 
&lt;/p&gt;&lt;p style="margin-left: 49pt"&gt; 
 &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9433372" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Moderation+Status/default.aspx">Moderation Status</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Item+Scheduling/default.aspx">Item Scheduling</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Workflows/default.aspx">Workflows</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Approval+status/default.aspx">Approval status</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Versioning/default.aspx">Versioning</category></item><item><title>SharePoint Accessibility Resources</title><link>http://blogs.msdn.com/sanjaynarang/archive/2008/12/01/sharepoint-accessibility-resources.aspx</link><pubDate>Mon, 01 Dec 2008 11:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9159871</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9159871.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9159871</wfw:commentRss><description>&lt;P&gt;I've been working on implementing accessibility requirements for a public facing site on MOSS. Though keywords such as "SharePoint accessibility" provide a number of results on Live Search or any other engine, I had difficult time in searching the appropriate resources. Thought it would be worthwhile sharing the resources that I found and providing a context around them. Here are these resources: &lt;/P&gt;
&lt;H3&gt;Microsoft's Statements/Papers on SharePoint Accessibility &lt;/H3&gt;
&lt;P&gt;We have couple of white papers and articles on this topic, however, search engines are yet to rank them better to come towards the top. Here are these: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Article: &lt;STRONG&gt;Accessibility features&lt;/STRONG&gt; (as provided by Office Online) &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://office.microsoft.com/en-us/sharepointserver/CH100948721033.aspx" mce_href="http://office.microsoft.com/en-us/sharepointserver/CH100948721033.aspx"&gt;http://office.microsoft.com/en-us/sharepointserver/CH100948721033.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Blog: &lt;STRONG&gt;Improvements in accessibility&lt;/STRONG&gt; – Blog entry on SharePoint Team blog by Lawrence Liu. Though it's pretty old entry (April 2006) and was written for pre RTM version, but you can find a good summary of new and improved accessibility features. Most of this holds for RTM also. The blog groups the improvement areas in categories such as Headings, Navigation, Keyboard, Graphics, High Contrast – Low Vision, HTML Controls and also relates them to specific checkpoints from WCAG 1.0 &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/sharepoint/archive/2006/04/24/improvements-in-accessibility.aspx" mce_href="http://blogs.msdn.com/sharepoint/archive/2006/04/24/improvements-in-accessibility.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2006/04/24/improvements-in-accessibility.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Whitepaper: &lt;STRONG&gt;Deliver accessible solutions by using Office SharePoint Server &lt;/STRONG&gt;- This downloadable white paper provides information and guidelines about the issues that organizations face when delivering Web solutions, including those built by using Microsoft Office SharePoint Server 2007 that are accessible to people with disabilities. It's a pretty good paper to read when you are starting your journey on accessibility. It describes the available out-of-the-box (OOB) accessibility features in MOSS 2007 and also provides a very good summary on Accessibility Kit for SharePoint (&lt;A href="http://aks.hisoftware.com/index.html" mce_href="http://aks.hisoftware.com/index.html"&gt;AKS&lt;/A&gt;). If you want to know all about AKS in 4 pages, this is the article to read. However, if you are looking for best practices or implementation approaches – you need to look for a different paper. Have a look at the next one &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc668367.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc668367.aspx"&gt;http://technet.microsoft.com/en-us/library/cc668367.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Whitepaper: &lt;STRONG&gt;Best practices for developing accessible Web sites&lt;/STRONG&gt; - This downloadable white paper provides information about designing and developing accessible Web sites in Microsoft Office SharePoint Server 2007. If you are looking for implementation best practices that you couldn't find in the white paper listed above, this is a very useful resource. In this paper, &lt;A title="Blog of Waldek Mastykarz" href="http://blog.mastykarz.nl/" mce_href="http://blog.mastykarz.nl/"&gt;Waldek Mastykarz&lt;/A&gt;, provides tips and techniques that are categorized in different areas such as General (HTML, javascript), .Net, MOSS, and IIS. You'll find tips such as appropriate MIME type, things to ensure while writing custom controls e.g. use Render method RenderControl &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc716527.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc716527.aspx"&gt;http://technet.microsoft.com/en-us/library/cc716527.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Other Resources &lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Blog: &lt;STRONG&gt;SharePoint Accessibility - Is MOSS 2007 accessible?&lt;/STRONG&gt; – Provides a quick comparison of SPS 2003 and MOSS 2007 with Priority 1 requirements &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://www.21apps.com/sharepoint/sharepoint-accessibility-is-moss-2007-accessible/" mce_href="http://www.21apps.com/sharepoint/sharepoint-accessibility-is-moss-2007-accessible/"&gt;http://www.21apps.com/sharepoint/sharepoint-accessibility-is-moss-2007-accessible/&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Article: &lt;STRONG&gt;Building ASP.NET 2.0 Web Sites Using Web Standards&lt;/STRONG&gt; - Though, this article provides the best practices for ASP.net in general, it is very useful from SharePoint perspective for developing custom web parts, field controls, web controls and user controls. The article provides the basic knowledge of mechanisms available within the ASP.NET 2.0 platform which support developing accessible web sites. This contains a lot of examples that would be useful for people who are new to accessibility. The techniques provided here would be mostly used while writing the "Render" or "CreateChildControls" methods. For example, you'll find this tip from this paper: "Provide an AssociatedControlId property when declaring an ASP.NET Label controls, so that the control renders a &amp;lt;label&amp;gt; tag." &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa479043.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa479043.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa479043.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Blog: &lt;STRONG&gt;CSS Friendly Control Adapters in SharePoint 2007 (A Walk-Through)&lt;/STRONG&gt; – Provides step-by-step walkthrough of how to use CSS Friendly Adapters, which are very helpful in creating CSS only, standards compliant controls (like the menu and treeView) for easy styling. These would be useful in areas where you'd like to use OOB navigation control in a publishing site. &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://www.sharepointblogs.com/mossman/archive/2007/03/08/css-friendly-control-adapters-in-sharepoint-2007-a-walk-through.aspx" mce_href="http://www.sharepointblogs.com/mossman/archive/2007/03/08/css-friendly-control-adapters-in-sharepoint-2007-a-walk-through.aspx"&gt;http://www.sharepointblogs.com/mossman/archive/2007/03/08/css-friendly-control-adapters-in-sharepoint-2007-a-walk-through.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Blog: Web part zone adapter – if you are using web part zone, it is difficult to be compliant as web part zones use HTML tables for layout purposes. This adapter does a nice job on converting those table tags to div tags. &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/eigilm/archive/2008/10/07/web-part-zone-adapter.aspx" mce_href="http://blogs.msdn.com/eigilm/archive/2008/10/07/web-part-zone-adapter.aspx"&gt;http://blogs.msdn.com/eigilm/archive/2008/10/07/web-part-zone-adapter.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Blog: Another day, another accessible MOSS website - Provides a step-by-step walkthrough on how to go about developing an accessible site &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://blog.thekid.me.uk/archive/2007/05/01/another-day-another-accessible-moss-website.aspx" mce_href="http://blog.thekid.me.uk/archive/2007/05/01/another-day-another-accessible-moss-website.aspx"&gt;http://blog.thekid.me.uk/archive/2007/05/01/another-day-another-accessible-moss-website.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Toolkits &lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;STRONG&gt;Accessibility Kit for SharePoint (AKS)&lt;/STRONG&gt; – this kit is used by HiSoftware in collaboration with Microsoft and free for use. One thing you'd like to know that, the kit provides maximum use when you use SharePoint OOB UI and controls. If you are building a publishing site, where most of the controls and UI are custom developed, AKS can be used for references purpose mostly. &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://aks.hisoftware.com/" mce_href="http://aks.hisoftware.com"&gt;http://aks.hisoftware.com&lt;/A&gt; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;Presentation: Accessibility Kit for SharePoint - Building Accessible Websites on MOSS 2007 – slide deck from session at SPC2008; provides some screenshots on how AKS kit works, which is sometimes difficult to understand through the documentation that comes with the installer &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/sharepoint/archive/2008/03/19/slidedeck-for-accessibility-kit-for-sharepoint-building-accessible-websites-on-moss-2007-session-at-spc2008-now-available.aspx" mce_href="http://blogs.msdn.com/sharepoint/archive/2008/03/19/slidedeck-for-accessibility-kit-for-sharepoint-building-accessible-websites-on-moss-2007-session-at-spc2008-now-available.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2008/03/19/slidedeck-for-accessibility-kit-for-sharepoint-building-accessible-websites-on-moss-2007-session-at-spc2008-now-available.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;&lt;STRONG&gt;ARF&lt;/STRONG&gt; – Definition as provided at its web site - ARF is a FREE (open source) development framework for SharePoint, both MOSS and WSS. It provides a consistent solution to common problems found in SharePoint publishing development. &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://www.spworks.co.uk/arf/what.aspx" mce_href="http://www.spworks.co.uk/arf/what.aspx"&gt;http://www.spworks.co.uk/arf/what.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;SharePoint Compliancy Toolkit - has been designed to help you achieve the accessibility level as described in Webrichtlijnen (Dutch government accessibility guidelines comparable to WCAG 1.0 Priority 2+) &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://www.sharepointblogs.com/tmt/archive/2007/10/20/Accessible-Web-Content-Management-Solutions-based-on-Microsoft-Office-SharePoint-Server-2007.aspx" mce_href="http://www.sharepointblogs.com/tmt/archive/2007/10/20/Accessible-Web-Content-Management-Solutions-based-on-Microsoft-Office-SharePoint-Server-2007.aspx"&gt;http://www.sharepointblogs.com/tmt/archive/2007/10/20/Accessible-Web-Content-Management-Solutions-based-on-Microsoft-Office-SharePoint-Server-2007.aspx&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Accessibility in General &lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV&gt;E-Book: &lt;STRONG&gt;Understanding Accessibility&lt;/STRONG&gt; - A Guide to Achieving Compliance on Web Sites and Intranets will assist you in achieving compliance with U.S. federal standards and W3C Guidelines for Web content. From the book home page – "&lt;EM&gt;This book is for Web Authors, Project Managers and basically any individual or team that is faced with the challenge of creating an accessible Web site or retrofitting a Web site to make it accessible. If you are new to accessibility we suggest you start at the beginning and read the entire book. If you are tasked with repairing sites that are not accessible, this book will serve as a reference and guide. If you review sites for accessibility this book will help you to select tools and understand accessibility requirements.&lt;/EM&gt;" &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://www.hisoftware.com/uaccess/Index.html" mce_href="http://www.hisoftware.com/uaccess/Index.html"&gt;http://www.hisoftware.com/uaccess/Index.html&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;W3C Resources: &lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;Official W3C Recommendation for Web Content Accessibility Guidelines 1.0 - &lt;A href="http://www.w3.org/TR/WCAG10/" mce_href="http://www.w3.org/TR/WCAG10/"&gt;http://www.w3.org/TR/WCAG10/&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;
&lt;DIV&gt;Web Accessibility Initiative (WAI) – Provides all resources from W3C such as Introductions, Techniques and Guidelines on Managing and Evaluating Accessibility &lt;/DIV&gt;
&lt;P&gt;&lt;A href="http://www.w3.org/WAI/" mce_href="http://www.w3.org/WAI/"&gt;http://www.w3.org/WAI/&lt;/A&gt; &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9159871" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Resources/default.aspx">Resources</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Accessibility/default.aspx">Accessibility</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/MOSS/default.aspx">MOSS</category></item><item><title>Back to Blogging</title><link>http://blogs.msdn.com/sanjaynarang/archive/2008/11/10/back-to-blogging.aspx</link><pubDate>Mon, 10 Nov 2008 20:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9058336</guid><dc:creator>sanjaynarang</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/sanjaynarang/comments/9058336.aspx</comments><wfw:commentRss>http://blogs.msdn.com/sanjaynarang/commentrss.aspx?PostID=9058336</wfw:commentRss><description>&lt;P&gt;It's been a long time (almost 18 months)&amp;nbsp;since I blogged last time ... and there's been a lot of changes in this time. The key changes are:&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;I've moved from HP to Microsoft&lt;/LI&gt;
&lt;LI&gt;My focus has moved from VSTS to SharePoint&lt;/LI&gt;
&lt;LI&gt;My blog has changed from &lt;A href="http://sanjaynarang.wordpress.com/" mce_href="http://sanjaynarang.wordpress.com/"&gt;http://sanjaynarang.wordpress.com/&lt;/A&gt;&amp;nbsp;to &lt;A href="http://blogs.msdn.com/sanjaynarang" mce_href="http://blogs.msdn.com/sanjaynarang"&gt;http://blogs.msdn.com/sanjaynarang&lt;/A&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;It took me a long time to get time for blogging again. Now, as I'm once again starting on this ,, plan to be much more regular!&lt;/P&gt;
&lt;P&gt;Would be coming up with first post very soon ...&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9058336" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/HP/default.aspx">HP</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://blogs.msdn.com/sanjaynarang/archive/tags/SharePoint/default.aspx">SharePoint</category></item></channel></rss>