<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkQCRn09eCp7ImA9WhRbGE4.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686</id><updated>2012-02-09T17:46:07.360-08:00</updated><category term="SharePoint 2010 Error" /><category term="Visual Studio" /><category term="SharePoint Saturday The Conference" /><category term="SharePoint Saturday" /><category term="Access Denied; Sharepoint 2010" /><category term="Windows Authentication" /><category term="debug infopath forms" /><category term="SharePoint 2010 ribbon" /><category term="Consumer Web Part" /><category term="Content Types" /><category term="Windows Server 2008" /><category term="Web Part Connections" /><category term="Host Header Bindings" /><category term="Using Forefront Synchronization Service Manager" /><category term="Setting up the PictureURL User Profile Property" /><category term="Site Variations" /><category term="Content Query Web Part" /><category term="Code" /><category term="Current Navigation" /><category term="Named Parameters" /><category term="List Content Type vs Site Content Type" /><category term="Anchor tag alteration by SharePoint" /><category term="Alternate Access Mappings" /><category term="Web.Config Settings using a SharePoint Feature" /><category term="Internet Access" /><category term="401 Error" /><category term="default.master changes" /><category term="Sharepoint 2010" /><category term="Networking" /><category term="WWF" /><category term="Error" /><category term="Sandbox Solution" /><category term="Lessons learnt;" /><category term="Attaching an event handler to a list" /><category term="UpdatePanel" /><category term="Variables in CSS" /><category term="CSS Variables" /><category term="rating control" /><category term="jQuery" /><category term="System.ServiceModel.AddressAlreadyInUseException" /><category term="XSL" /><category term="CSS" /><category term="PDF" /><category term="Asynchronously load web parts" /><category term="SharePoint 2010 ratings" /><category term="Search Exception" /><category term="SharePoint 2010 RSS Viewer Web Part" /><category term="Anonymous Access" /><category term="Scrolling Bug" /><category term="VariationLabelMenu" /><category term="Cookie; JavaScript;" /><category term="asp.net" /><category term="File Association" /><category term="Debug" /><category term="Branding" /><category term="Externally available site" /><category term="Search.asmx" /><category term="SharePoint search results" /><category term="FBA" /><category term="LoginView" /><category term="CustomQuickAccess.xml" /><category term="Table of Contents" /><category term="People Search" /><category term="Architecture" /><category term="Low Disk Space" /><category term="SPWebConfigModification" /><category term="Publishing Page Layouts" /><category term="Maximum Web Parts on a page" /><category term="Secure Token Service" /><category term="SharePoint Publishing Page Approval status" /><category term="Calendar" /><category term="Performance Tuning" /><category term="error while upgrading solution in sharepoint" /><category term="WSPBuilder" /><category term="CSS Constants" /><category term="SharePoint:SiteLogoImage" /><category term="SharePoint Web Services" /><category term="external usb hard drive" /><category term="SharePoint FieldControls" /><category term="web-based infopath forms" /><category term="RTE" /><category term="The solution file located at does not appear to be a valid upgrade" /><category term="Exception" /><category term="PowerShell" /><category term="SharePoint update conflict" /><category term="SharePoint Config Log" /><category term="sharepoint:projectproperty" /><category term="GAC" /><category term="Framework" /><category term="SPSecurityTrimmedControl" /><category term="Managed Metadata" /><category term="Social Tags Search results XSL" /><category term="Web Parts" /><category term="Site Template" /><category term="iFrame from code behind" /><category term="IWebPartParameters" /><category term="SPWebPartManager" /><category term="Table of Contents 20 Item Limit" /><category term="User Profile Synchronization Problem Sharepoint 2010" /><category term="SPQuery" /><category term="Custom Quick Access Buttons" /><category term="SharePoint:SPLinkButton" /><category term="Automatic Properties" /><category term="SharePoint2010" /><category term="SharePoint Search" /><category term="SharePoint" /><category term="Application Pages;" /><category term="Capacity Planning" /><category term="Search" /><category term="XmlDocument" /><category term="Rating Search Results XSL" /><category term="Anonymous Types" /><category term="sp.ui.rte.js" /><category term="C#" /><category term="Master Page" /><category term="Master Page Branding" /><category term="Web.Config" /><category term="List Form" /><category term="HttpModule" /><category term="SharePoint 2010 Cache" /><category term="Field data alteration by SharePoint" /><category term="User Profiles" /><category term="Social Tags" /><category term="SharePoint Folders" /><category term="Backup/Restore" /><category term="SharePoint 2010 Search" /><category term="FieldControls" /><category term="SharePoint 2010 Excel Services" /><category term="ConsoleAction" /><title>Assorted SharePoint Thoughts - Chaitu Madala</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.chaitumadala.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>93</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AssortedThoughts" /><feedburner:info uri="assortedthoughts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>AssortedThoughts</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;CU4BQ3g9eCp7ImA9WhRUGUo.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-7913677059149089885</id><published>2012-01-30T17:34:00.001-08:00</published><updated>2012-01-30T17:39:12.660-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T17:39:12.660-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Performance Tuning" /><title>How to tune SharePoint 2010 Server for better performance?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;What?&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
How to tune SharePoint 2010 Server for better performance?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Why?&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
SharePoint has an array of areas where performance is an issue and bottlenecks occur. It is particularly important for public web sites, but Intranet sites &amp;amp; collaborative sites benefit from this as well. In this post we will learn how to tune SharePoint 2010 for better performance.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;How?&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Before you even start thinking about improving your performance, keep in mind that even the best configuration won’t help you if your hardware is simply too weak to handle the SharePoint environment.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
SharePoint is very memory intensive. Always plan for fast network cards and plenty of RAM! It is very important that the server achieve the fastest response possible from the I/O subsystem. More and faster disks or arrays provide sufficient I/O operations per second (IOPS) while maintaining low latency and queuing on all disks.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In this post we will look at the below:&lt;/div&gt;
&lt;div&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Infrastructure Optimization&lt;/li&gt;
&lt;li&gt;Database Optimization&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Server Optimization&lt;/li&gt;
&lt;li&gt;Page Optimization&lt;/li&gt;
&lt;li&gt;Other Considerations&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Infrastructure Optimization:&lt;/u&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Search in SharePoint is very memory intensive. It is often the first source of performance headaches.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The better the links to the database are optimized, the better the overall performance will be.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If all the servers (front-end servers and application servers) are behind the same switch, the application servers that run search will be going out through the switch each time an incremental crawl is kicked off. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Below is an example diagram of an undesirable topography:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-I1xtBfbUACQ/Tu4OUPq9BPI/AAAAAAAAFgw/5AXc0RUQL0M/s1600/Unoptimized+Network.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="393" src="http://3.bp.blogspot.com/-I1xtBfbUACQ/Tu4OUPq9BPI/AAAAAAAAFgw/5AXc0RUQL0M/s400/Unoptimized+Network.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;Try to separate front-end user traffic from back-end SQL traffic.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Front-end servers should talk to the SQL server(s) through one network and application servers &amp;amp; AD talk to SQL server(s) though a different network.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Below is a diagram of the desired topography:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-XxXVSea6uIU/TycSIMqTXCI/AAAAAAAAFhU/oDUHYK0xDS8/s1600/Optimized+Network+1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-XxXVSea6uIU/TycSIMqTXCI/AAAAAAAAFhU/oDUHYK0xDS8/s640/Optimized+Network+1.PNG" width="316" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Even better, set aside an index server in the farm and let it crawl itself without having to take traffic across the front-end servers, as shown below:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-F1rj7qtdTO8/TycSVNSZCzI/AAAAAAAAFhc/57HJt8BbQk8/s1600/Optimized+Network+2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-F1rj7qtdTO8/TycSVNSZCzI/AAAAAAAAFhc/57HJt8BbQk8/s640/Optimized+Network+2.PNG" width="356" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In addition to search, publishing sites require a lot of memory as the number of read operations will be 100-1000 times greater than write operations. ECM sites require more application servers as there will be a lot of back and forth talk between them.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Try to distribute your service applications across multiple application servers whenever possible.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;u&gt;Database Optimization:&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;&lt;b&gt;Database Operations:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
Different things in SharePoint have different effects on the databases.&lt;/div&gt;
&lt;div&gt;
Order of items by their impact (1 being the biggest killer whereas 10 has the least impact):&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;Performance Point Services&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Content Query&lt;/li&gt;
&lt;li&gt;Security Trimming (&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;SPSecurityTrimmedControl&lt;/span&gt; delegate)&lt;/li&gt;
&lt;li&gt;Collaboration&lt;/li&gt;
&lt;li&gt;Workflow&lt;/li&gt;
&lt;li&gt;Publishing&lt;/li&gt;
&lt;li&gt;Social&lt;/li&gt;
&lt;li&gt;Client Access&lt;/li&gt;
&lt;li&gt;Browsing&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
What is the impact of custom code? It depends on the quality of the code.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Database Size:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Even though Microsoft says that each content database can hold up to 4 TB, the recommended practical limit is 200 GB for easily manageable backup and restores.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Analytics databases grow very quickly to very large sizes. Try to isolate Analytics databases. Analytics reports can have significant impact on CPU load.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Search uses multiple databases for its operations. It uses separate databases for crawl, properties and administration. Crawl databases can be extremely large. Crawl databases also have heavy transactional volumes. Try to isolate temp and crawl databases if possible.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Database Management:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
Performing the below steps at the database might result in better performance:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Manually configure auto-growth settings. The default auto-growth setting in SQL Server is 1 MB. Set it to 100MB / 200 MB depending on your environment. This allows the database to grow in larger chunks, which is more efficient since these databases tend to grow rapidly.&lt;/li&gt;
&lt;li&gt;Defragment database indexes regularly.&lt;/li&gt;
&lt;li&gt;Limit content DB size per site collection.&lt;/li&gt;
&lt;li&gt;Isolate transaction logs by writing them off onto separate disks.&lt;/li&gt;
&lt;li&gt;Enforce site collection quotas in Central Administration.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;u&gt;Caching:&lt;/u&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Make sure that all the custom controls / web parts use caching.&lt;br /&gt;
I have build and contributed a framework for custom web parts out in Codeplex.&lt;br /&gt;
It is available here: &lt;a href="http://asyncwebpartframewrk.codeplex.com/"&gt;http://asyncwebpartframewrk.codeplex.com/&lt;/a&gt;.&lt;br /&gt;
Web parts that are built using this framework will make use of caching and asynchronous loading of data into the web part after the page is loaded.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
SharePoint supports the following types of cache:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ol style="text-align: left;"&gt;
&lt;li&gt;BLOB Cache&lt;/li&gt;
&lt;li&gt;Output Cache&lt;/li&gt;
&lt;li&gt;Object Cache&lt;/li&gt;
&lt;li&gt;Branch Cache&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;&lt;b&gt;BLOB Cache:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BLOB Cache/Disk-based caching controls caching for binary large objects (BLOBs) such as image, sound, video, and some static content files like CSS. Disk-based caching is fast. It eliminates the need for database round trips. BLOBs are retrieved from the database once and stored on the Web client. Further requests are served from the cache and trimmed based on security.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
BLOB Cache needs to be enabled from Web.Config. Make sure that there is enough space in the drive/server where blob cache is stored. It’s important to understand that BLOB cache is per-machine. So make sure that the BLOB cache settings are consistent across the whole farm. You don’t want one server with 1 GB of BLOB cache and another server with 4 GB of BLOB cache. You might see strange and inconsistency in performance if you don’t configure BLOB cache consistently.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
By default, the disk-based BLOB cache is off and must be enabled on the front-end Web server. In order to enable BLOB cache, locate the Web.Config for the web application and edit it. The recommended approach for making such changes in Web.Config file is through a feature receiver or PowerShell by making use of SharePoint’s SPWebConfigModification class.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In the Web.Config file, find the following line:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;BlobCache location="" path="\.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv)$" maxSize="10" enabled="false" /&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In this line, change the location attribute to specify a directory that has enough space to accommodate the cache size.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
We strongly recommend that you specify a directory that is not on the same drive as where either the server operating system swap files or server log files are stored.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To add or remove file types from the list of file types to be cached, for the path attribute, modify the regular expression to include or remove the appropriate file extension. If you add file extensions, make sure to separate each file type with a pipe (|), as shown in this line of code.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To change the size of the cache, type a new number for maxSize. The size is expressed in gigabytes (GB), and 10 GB is the default. It is recommended that you not set the cache size smaller than 10 GB. When you set the cache size, make sure to specify a number large enough to provide a buffer at least 20 percent bigger than the estimated size of the content that will be stored in the cache.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To enable the BLOB cache, change the enabled attribute, from "&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;false&lt;/span&gt;" to "&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;true&lt;/span&gt;".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can use an STSADM command to flush all BLOB caches associated with a specified Web application on different Web front-end computers on the farm:&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;stsadm –o setproperty –propertyname blobcacheflushcount –propertyvalue 11 –url http://mywebapp::port&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Output Cache:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Output cache requires publishing infrastructure. It is specifically geared more towards publishing portals. HTML pages are written into memory and served from memory as opposed to serving them from databases. Watch out for authoring experience! If output cache is set in an authoring environment, authors may not see their changes until the cache expires. Similarly, make sure to not output cache search results.&lt;/div&gt;
&lt;div&gt;
Object Cache:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Object Cache is used in custom code. This is especially useful when the content that is served does not change quite often. It is extremely important to make sure that you cache and serve data appropriately to users based on their permissions when using object cache. You don’t want a user with insufficient privileges to be able to access data that he/she is not supposed to access just because the custom code has cached the data incorrectly without giving enough consideration to the permission levels.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Branch Cache:&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Branch Cache is a feature within Windows 2008 R2 / Windows 7 Enterprise &amp;amp; Ultimate that allows you to pull documents from the network and cache them locally. Branch Cache improves performance of applications that use HTTP, HTTPS, as well as SMB (the protocol used for shared folders) and WebDav (an extension of HTTP). Because SharePoint uses these protocols, it is able to take advantage of Branch Cache. Just remember that clients must be using Windows 7 and Windows 2008 Server for it to work.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
In order to enable cache for a site collection, navigate to the site collection settings page and then scroll down to the section “Site Collection Administration”.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-zG3g8a55UyY/TycUj7STR9I/AAAAAAAAFhk/PtNbQDRMfZg/s1600/Site+Collection+Cache+Settings.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-zG3g8a55UyY/TycUj7STR9I/AAAAAAAAFhk/PtNbQDRMfZg/s400/Site+Collection+Cache+Settings.JPG" width="281" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As highlighted in the above screenshot, you can configure Object &amp;amp; Output cache from SharePoint UI.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Enable Output Cache, Object Cache &amp;amp; Cache Profiles on each SharePoint site collection. Enabling blob &amp;amp; output cache improves the site performance by 50-60%.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Server Optimization&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;IIS Compression:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
IIS Compression is turned on by default in Windows Server 2008. An important thing to note is that it is just enabled but not configured. &amp;nbsp;IIS Compression takes all the objects in the site, compresses them and delivers them as smaller packages to the clients. &amp;nbsp;It can be configured to be set at a level between 0 and 9. By default, it is set to 0 when it is turned on. 9 means lot of pressure on CPU utilization. &amp;nbsp;We recommend it being set to 6/7/8/9 depending upon your hardware.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
IIS Compression wont effect dynamic content such as web parts like Content Query Web Part etc. Just like blob &amp;amp; output cache it can only compress static content. &amp;nbsp;Depending on the level of compression set, page size will be reduced by 30% - 40%. &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
IIS Compression is only enabled but not configured. If you want to make sure that it is enabled, fire open IIS Manager and choose a site. &amp;nbsp;Click on the button “Compression” as shown in the screenshot below:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-jVDJ8uJgXek/TycU7zgOVAI/AAAAAAAAFhs/1tfgRgcuwqE/s1600/IIS+Compression.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="435" src="http://4.bp.blogspot.com/-jVDJ8uJgXek/TycU7zgOVAI/AAAAAAAAFhs/1tfgRgcuwqE/s640/IIS+Compression.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
IIS Compression needs to be configured through command prompt using the following scripts. (The below script sets the levels to 9)&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;%windir%\system32\inetsrv\appcmd.exe set config /section:httpCompression –[name=’gzip’].dynamicCompressionLevel:9&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="color: blue; font-family: 'Courier New', Courier, monospace;"&gt;%windir%\system32\inetsrv\appcmd.exe set config /section:httpCompression –[name=’gzip’].staticCompressionLevel:9&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Resource Throttling &amp;amp; Locks:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
By default, resource throttling is set to 5000 items (You can have up to 20,000). &amp;nbsp;SQL Server by default locks the table when it executes a query that returns more than 5000 records from a record set. &amp;nbsp;You can change the 5000 item limit in Central Admin depending on your environment and requirements, but this is not recommended.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Instead, consider enabling bit rate throttling. &amp;nbsp;Bit rate throttling controls download speeds of large objects like Flash, Silverlight, videos, etc. by limiting the amount of bandwidth that can be used for streaming.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
To enable bit rate throttling:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Navigate to Central Admin &amp;gt; Application Management &amp;gt; Manage Web Applications&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Choose the desired web application and click on the button “General Settings” in the ribbon. In the drop down click on “Resource Throttling”&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-cilDgVRACOs/TycVkaLfIbI/AAAAAAAAFh0/Lxr0fu3wVqk/s1600/Resource+Throttling.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="98" src="http://4.bp.blogspot.com/-cilDgVRACOs/TycVkaLfIbI/AAAAAAAAFh0/Lxr0fu3wVqk/s640/Resource+Throttling.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Enabling object model override allows custom code to be able to retrieve more than 5000 items at a time.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-vlHd5qRphaA/TycVqvHobwI/AAAAAAAAFh8/-i3sPecO5HU/s1600/Resource+Throttling+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-vlHd5qRphaA/TycVqvHobwI/AAAAAAAAFh8/-i3sPecO5HU/s640/Resource+Throttling+2.png" width="370" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
HTTP Request Throttling, which is on by default, monitors front-end server performance and in the event of HTTP request overload, rejects low priority requests when the threshold is reached. This is particularly useful for public facing web sites where there are more chances for DDOS kind of attacks.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-UYCjQzlrtwk/TycVzFP6szI/AAAAAAAAFiE/Oa7T6D7Mbb0/s1600/Resource+Throttling+3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-UYCjQzlrtwk/TycVzFP6szI/AAAAAAAAFiE/Oa7T6D7Mbb0/s640/Resource+Throttling+3.png" width="370" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Page Optimization:&lt;/u&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;Optimize Pages:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
SharePoint pages contain lot of resources; these can include but are not limited to:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;JavaScript Files&lt;/li&gt;
&lt;li&gt;CSS Files&lt;/li&gt;
&lt;li&gt;Navigation Controls&lt;/li&gt;
&lt;li&gt;Menus&lt;/li&gt;
&lt;li&gt;Web Parts&lt;/li&gt;
&lt;li&gt;Custom Controls&lt;/li&gt;
&lt;li&gt;Ribbon Control&lt;/li&gt;
&lt;li&gt;Delegates&lt;/li&gt;
&lt;li&gt;SPSecurityTrimmedControls&lt;/li&gt;
&lt;li&gt;Publishing Fields&lt;/li&gt;
&lt;li&gt;Search Controls&lt;/li&gt;
&lt;li&gt;Hidden Controls&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Customized pages (unghosted pages as they are called in earlier versions) may be easy to develop but they are bad in performance. However, The advantage with customized pages is that they can be created and modified using SharePoint Designer. &amp;nbsp;When a page is customized in SharePoint and saved, it will no longer be served from file system. Instead a copy of the page will be written into the database and from there on whenever the page is requested, it will be retrieved dynamically from the database.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Un-customized pages (ghosted pages) are always loaded from the file system. Thus they take advantage of blog cache and output cache. Thus, they load faster and perform better. &amp;nbsp;There is a noticeable 10% - 30% performance difference between customized and un-customized pages. &amp;nbsp;In order to create un-customized page layouts or master pages, you will have to develop solutions using Visual Studio 2010 that will deploy them to /_layouts/ folder in 14 hive.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
In addition to pulling all the content from databases, all the customized pages will have to run through safe mode parser. Safe mode parser is a control that resides in each customized page and watches for inline scripts. Anything that comes out of the database has to run through the safe mode parser.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
ASP.NET parses a page on first render and compiles it into an assembly. The safe mode parser does NOT compile pages. It is designed to interpretatively parse a page and create the object structure of the page. In the event inline server-side code is detected, the safe mode parser will not allow the page to render. Additionally, the only objects within the page (i.e. controls marked as runat=’server’) which can be instantiated are those items found in the SafeControls list in Web.Config.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Optimize Branding:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
I advise you start building master pages from minimal.master. &amp;nbsp;This is a much cleaner starting point that will remove much of the unnecessary items in standard master pages. &amp;nbsp;Consolidate all the CSS &amp;amp; JavaScript files and try to minify the JavaScript files so that the browser does not have to make multiple requests for multiple CSS/JS files. &amp;nbsp;Additionally, Use image stitching on pages with lots of small images to reduce the number of requests.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
It is also recommended that all the resources such as style sheets, master pages, page layouts, images, JavaScript files, etc are stored on file system (i.e. /_layouts/ folder in 14 hive) not in the virtual file system within your site (Style Library, Publishing Images etc…). To achieve this, you will have to develop solutions using Visual Studio 2010 that will deploy them to /_layouts/ folder in 14 hive.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Also consider referencing files like jQuery.js, etc.. from Content Delivery Networks. Many of them allow you to link to their copies of the files. &amp;nbsp;Often times, you can Use CDN—for example the Google AJAX Libraries content delivery network—to serve JQuery to your users directly from Google’s network of data centers. Doing so has several advantages over hosting JQuery on your server(s): decreased latency, increased parallelism, and better caching.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Just because a SharePoint list can hold millions of items does not mean it should. &amp;nbsp;All user content in all lists throughout the entire site collection is stored in a single table in content database. Scary!! &amp;nbsp;The more the number of items, the slower the site will be. Consider partitioning the data into multiple site collections.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Even though list view web parts are improved in SharePoint 2010 and are XSLT based, they are still bad on performance with large data sets. XSLT is not particularly fast when there are large datasets. That is due to the large amount of looping that it needs to do to the xml that is returned. So consider developing custom controls with good caching mechanisms if you need to render large datasets to your users.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Wake up SharePoint 2010 Every Day:&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Avoid that COLD, SLOW request that baffles users. Use a simple application called SPWakeUp.exe found here that touches each site and site collection on your SharePoint server to rebuild the IIS cache. Use Windows Task Scheduler to run this application once a day usually at around 4:00 AM.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Asynchronously Load Web Parts / Controls:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
If you have XSLT List View Web Parts / Search Results Web Parts for displaying list data or aggregated data, SharePoint 2010 allows you to load the web part data asynchronously after the page is loaded. To enable asynchronous loading, edit the web part and in the editor part, navigate to the AJAX Options section and check the option “Enable Asynchronous Load”.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ouzE4LzBlOg/TycWhN8Mr5I/AAAAAAAAFiM/LTapKl716SQ/s1600/WebPart+AJAX+Options.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ouzE4LzBlOg/TycWhN8Mr5I/AAAAAAAAFiM/LTapKl716SQ/s1600/WebPart+AJAX+Options.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
You can also enable asynchronous loading for Content Query Web Part as well. Unfortunately it is not so straight forward. I have explained how to do that in &lt;a href="http://www.chaitumadala.com/2010/08/how-to-make-sharepoint-2010-content.html" target="_blank"&gt;this post&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Other Considerations:&lt;/u&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;u&gt;&lt;b&gt;List Definitions:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;/div&gt;
&lt;div&gt;
Plan list schemas, list and library limits well in advance. If a list definition consists of more columns of a particular type than the recommended number of columns, it results in row wrapping.&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Column limits:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
It is widely known that SharePoint Server 2010 data is stored in SQL Server tables. To allow for the maximum number of possible columns in a SharePoint list, SharePoint Server will create several rows in the database when data will not fit on a single row. This is called row wrapping.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Each time that a row is wrapped in SQL Server, an additional query load is put on the server when that item is queried because a SQL join must be included in the query. To prevent too much load, by default a maximum of six SQL Server rows are allowed for a SharePoint item. This limit leads to a particular limitation on the number of columns of each type that can be included in a SharePoint list. The article at this URL describes all the column limits: &lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx#Column"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx#Column&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
The row wrapping parameter can be increased beyond six, but this may result in too much load on the server. Performance testing is recommended before exceeding this limit. &amp;nbsp;Be careful—SQL row wrapping can &lt;b&gt;degrade the performance by 35%&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Developer Dashboard:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Developer dashboard provides metrics on object execution for individual pages. &amp;nbsp;Turning on developer dashboard can be done in code or with PowerShell.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Wictor Wilen created a solution that can be used for configuring developer dashboard through UI. &lt;a href="http://www.wictorwilen.se/Post/SharePoint-2010-Developer-Dashboard-configuration-feature.aspx"&gt;http://www.wictorwilen.se/Post/SharePoint-2010-Developer-Dashboard-configuration-feature.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Timer Job Separation:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
You can take some jobs and pin them to a content database which is running in a different farm or a different environment. So that load is off the server.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Finally many thanks to Eric Shupps for his wonderful demonstration at SharePoint Conference 2011. He inspired me to share this wealth of information that I learned from him. Eric can be found at &lt;a href="http://www.binarywave.com/blogs/eshupps/default.aspx"&gt;http://www.binarywave.com/blogs/eshupps/default.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;Additional Resources:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
SharePoint Server 2010 Capacity Management: Software Boundaries and Limits&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/cc262787.aspx"&gt;http://technet.microsoft.com/en-us/library/cc262787.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Capacity Management and Sizing Overview for SharePoint Server 2010&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ff758647.aspx"&gt;http://technet.microsoft.com/en-us/library/ff758647.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Capacity Planning for SharePoint Server 2010&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ff758645.aspx"&gt;http://technet.microsoft.com/en-us/library/ff758645.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Performance Testing for SharePoint Server 2010&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ff758659.aspx"&gt;http://technet.microsoft.com/en-us/library/ff758659.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Storage and SQL Server Capacity Planning and Configuration&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/cc298801.aspx"&gt;http://technet.microsoft.com/en-us/library/cc298801.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Performance and Capacity Technical Case Studies&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/cc261716.aspx"&gt;http://technet.microsoft.com/en-us/library/cc261716.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Monitoring and Maintaining SharePoint Server 2010&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ff758658.aspx"&gt;http://technet.microsoft.com/en-us/library/ff758658.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Performance Testing for SharePoint Server 2010&lt;/div&gt;
&lt;div&gt;
&lt;a href="http://technet.microsoft.com/en-us/library/ff758659.aspx"&gt;http://technet.microsoft.com/en-us/library/ff758659.aspx&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-7913677059149089885?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Sd5wvYR4ktdyeBU_AOJaMvR8-Jw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Sd5wvYR4ktdyeBU_AOJaMvR8-Jw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Sd5wvYR4ktdyeBU_AOJaMvR8-Jw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Sd5wvYR4ktdyeBU_AOJaMvR8-Jw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/BcEgKTqR-QM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/7913677059149089885/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2012/01/how-to-tune-sharepoint-2010-server-for.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7913677059149089885?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7913677059149089885?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/BcEgKTqR-QM/how-to-tune-sharepoint-2010-server-for.html" title="How to tune SharePoint 2010 Server for better performance?" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-I1xtBfbUACQ/Tu4OUPq9BPI/AAAAAAAAFgw/5AXc0RUQL0M/s72-c/Unoptimized+Network.PNG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2012/01/how-to-tune-sharepoint-2010-server-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEBR346eip7ImA9WhRUGUo.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-1485846459258805655</id><published>2012-01-30T17:34:00.000-08:00</published><updated>2012-01-30T17:34:16.012-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T17:34:16.012-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Current Navigation" /><category scheme="http://www.blogger.com/atom/ns#" term="Code" /><title>How To Customize Current Navigation (Left Navigation) in SharePoint 2010 To Show Multiple Levels?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
SharePoint 2010 has a limitation that it only shows up to 2 levels of navigation items at any given time in any page in the current navigation (aka current navigation).&lt;br /&gt;
&lt;br /&gt;
Let us take a typical scenario where I have my site structure as defined below:&lt;br /&gt;
&lt;br /&gt;
Root site&lt;br /&gt;
&amp;nbsp; Team Site&lt;br /&gt;
&amp;nbsp; Subsite Level 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;Subsite Level 2&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Subsite Level 3&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;The above requirement is typical for especially public/internet facing sites where it is useful to show the structure of your sites/pages exactly in the manner above.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The below screenshot shows an example of what is expected in an easily&amp;nbsp;navigable public facing SharePoint 2010 site.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-lIuBFxoWouY/TkyITQsVPXI/AAAAAAAAFTk/rsmGBqglW8w/s1600/Navigation+showing+4+levels.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-lIuBFxoWouY/TkyITQsVPXI/AAAAAAAAFTk/rsmGBqglW8w/s640/Navigation+showing+4+levels.JPG" width="374" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The limited OOB behavior in SharePoint 2010 does not allow us to show navigation the way we want through UI settings.&lt;br /&gt;
&lt;br /&gt;
Here is a series of&amp;nbsp;screen shots&amp;nbsp;that I have taken from an OOB publishing site in SharePoint 2010.&lt;br /&gt;
&lt;br /&gt;
Let us take a scenario where I have my site structure as defined below:&lt;br /&gt;
&lt;br /&gt;
Root site&lt;br /&gt;
&amp;nbsp; Team Site&lt;br /&gt;
&amp;nbsp; Subsite Level 1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;Subsite Level 2&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Subsite Level 2 Page&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Subsite Level 3&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Subsite Level 3&lt;br /&gt;
&lt;br /&gt;
Here is what SharePoint 2010 gave me.&lt;br /&gt;
&lt;br /&gt;
The root site:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-WcG-w1u25ZE/TkyJcpPcPiI/AAAAAAAAFT8/apX_ujQ1gPw/s1600/Root.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-WcG-w1u25ZE/TkyJcpPcPiI/AAAAAAAAFT8/apX_ujQ1gPw/s1600/Root.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Subsite Level 1:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-V4U1rN9_wEw/TkyJa1fTU5I/AAAAAAAAFTo/ZPrHpqn2apk/s1600/Level+1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-V4U1rN9_wEw/TkyJa1fTU5I/AAAAAAAAFTo/ZPrHpqn2apk/s320/Level+1.JPG" width="197" /&gt;&lt;/a&gt;&lt;/div&gt;
Subsite Level 2:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-sCB_27C7l_A/TkyJbM15OkI/AAAAAAAAFTs/ofYIWfWWB30/s1600/Level+2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-sCB_27C7l_A/TkyJbM15OkI/AAAAAAAAFTs/ofYIWfWWB30/s1600/Level+2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
Subsite Level 3:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-9gZr-FJ5mtc/TkyJbRVenEI/AAAAAAAAFTw/SGdjude50Pg/s1600/Level+3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-9gZr-FJ5mtc/TkyJbRVenEI/AAAAAAAAFTw/SGdjude50Pg/s1600/Level+3.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As you may have noticed, SharePoint does not show any more than 2 levels at any time.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
With a combination of little bit of jQuery, CSS &amp;amp; a Custom Control, this can be accomplished easily.&lt;br /&gt;
The control that I am going to demonstrate in this post can handle any number of levels to display.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;The Custom Control:&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;br /&gt;
Create a new custom control that inherits&amp;nbsp;System.Web.UI.WebControls.HierarchicalDataBoundControl&lt;br /&gt;
Use the code provided to build the control:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.WebControls;

namespace SharePoint2010.Navigation.Current
{
    [ParseChildren(false), PersistChildren(true)]
    public class LeftNavController : System.Web.UI.WebControls.HierarchicalDataBoundControl
    {
        #region Private Members
        private int currentNodeLevel = 0;
        private SiteMapNode currentNode;
        #endregion

        #region Overrides
        /// &amp;lt;summary&amp;gt;
        /// Allows for debugging information to be written to the page source.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="writer"&amp;gt;&amp;lt;/param&amp;gt;
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);

            if (Page.ClientQueryString.Contains("show_nav_debug"))
            {
                writer.Write(string.Format("&amp;lt;!--Current Level:{0} Current Key:{1}--&amp;gt;", currentNodeLevel, currentNode.Key));
            }
        }

        /// &amp;lt;summary&amp;gt;
        /// Dynamically set properties of the AspMenu control based on the current location.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="e"&amp;gt;&amp;lt;/param&amp;gt;
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            SiteMapDataSource dataSource;

            try
            {
                // Find AspMenu controls in the child collection
                foreach (Control c in this.Controls)
                {
                    // Check child for proper type
                    AspMenu menu = c as AspMenu;

                    // Continue when child is correct type
                    if (menu != null)
                    {
                        // Extract AspMenu's data source
                        this.DataSourceID = menu.DataSourceID;

                        // Check data source for proper type
                        dataSource = this.GetDataSource() as SiteMapDataSource;

                        // Continue when data source is proper type
                        if (dataSource != null)
                        {
                            // Get current site node
                            currentNode = dataSource.Provider.CurrentNode;

                            // Determine level of current site node
                            currentNodeLevel = DetermineLevel(currentNode, ref currentNodeLevel);

                            // Set properties of the AspMenu and it's data source
                            dataSource.StartFromCurrentNode = true;
                            dataSource.StartingNodeUrl = "";
                            dataSource.ShowStartingNode = false;
                            menu.MaximumDynamicDisplayLevels = 0;

                            if (currentNodeLevel &amp;lt;= 2)
                            {
                                // Show only children in navigation
                                dataSource.StartingNodeOffset = 0;
                                menu.StaticDisplayLevels = 2;
                            }

                            if (currentNodeLevel == 3)
                            {
                                // Show children and siblings in navigation
                                dataSource.StartingNodeOffset = -2;
                                menu.StaticDisplayLevels = 3;
                            }

                            if (currentNodeLevel == 4)
                            {
                                // Show children and siblings in navigation
                                dataSource.StartingNodeOffset = -3;
                                //menu.StaticDisplayLevels = 4;
                                menu.StaticDisplayLevels = 10;
                            }

                            if (currentNodeLevel == 5)
                            {
                                // Show children and siblings in navigation
                                dataSource.StartingNodeOffset = -4;
                                menu.StaticDisplayLevels = 10;
                            }

                            if (currentNodeLevel == 6)
                            {
                                // Show children and siblings in navigation
                                dataSource.StartingNodeOffset = -5;
                                menu.StaticDisplayLevels = 10;
                            }

                            if (currentNodeLevel == 7)
                            {
                                // Show children and siblings in navigation
                                dataSource.StartingNodeOffset = -6;
                                menu.StaticDisplayLevels = 10;
                            }

                            if (currentNodeLevel &amp;gt;= 8)
                            {
                                // Show children and siblings in navigation
                                dataSource.StartingNodeOffset = -6;
                                menu.StaticDisplayLevels = 10;
                            }

                            //Treat pages as same level as site
                            if (currentNode.Key.ToUpper().Contains("/PAGES/"))
                            {
                                //if (currentNodeLevel &amp;gt;= 5)
                                if (currentNodeLevel &amp;gt;= 3)
                                    dataSource.StartingNodeOffset = dataSource.StartingNodeOffset++;
                                else
                                    dataSource.StartingNodeOffset--;
                                //menu.StaticDisplayLevels++;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
        #endregion

        #region Private Methods
        /// &amp;lt;summary&amp;gt;
        /// Calculate the depth of a site map node by walking back up the tree.
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name="item"&amp;gt;The site map node to evaluate&amp;lt;/param&amp;gt;
        /// &amp;lt;param name="level"&amp;gt;Level to pass between recursive calls&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;An integer representing the depth of the node&amp;lt;/returns&amp;gt;
        private int DetermineLevel(SiteMapNode item, ref int level)
        {
            if (item != null &amp;amp;&amp;amp; item.ParentNode != null)
            {
                level++;
                DetermineLevel(item.ParentNode, ref level);
            }
            return level;
        }
        #endregion
    }
}
&lt;/pre&gt;
&lt;br /&gt;
When the control is compiled, deployed and is ready to be accessed by SharePoint, we need to make sure that it is registered in the master page.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;%@ Register TagPrefix="CurrentNavController" Namespace="SharePoint2010.Navigation.Current" Assembly="SharePoint2010.Navigation.Current,Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx" %&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
Locate the ContentPlaceHolder with id "PlaceHolderLeftNavBar" and replace its content as shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server"&amp;gt;
 &amp;lt;CurrentNavController:LeftNavController runat="server" ID="lNavController"&amp;gt;
        &amp;lt;!-- Secondary Navigation Data Source --&amp;gt;
        &amp;lt;PublishingNavigation:PortalSiteMapDataSource
   ID="SiteMapDS"
   runat="server"
   EnableViewState="false"
   SiteMapProvider="CurrentNavigation"
   StartFromCurrentNode="true"
   StartingNodeOffset="0"
   ShowStartingNode="false"
   TrimNonCurrentTypes="Heading"/&amp;gt;
        &amp;lt;!-- end Secondary Navigation Data Source --&amp;gt;
        &amp;lt;!-- Secondary Navigation Menu --&amp;gt;
        &amp;lt;nav&amp;gt;
   &amp;lt;SharePoint:AspMenu
    ID="CurrentNav"
    EncodeTitle="false"
    runat="server"
    EnableViewState="false"
    DataSourceID="SiteMapDS"
    UseSeparateCSS="false"
    UseSimpleRendering="true"
    Orientation="Vertical"
    StaticDisplayLevels="3"
    MaximumDynamicDisplayLevels="2"
    CssClass="s4-ql" 
    SkipLinkText="&amp;lt;%$Resources:cms,masterpages_skiplinktext%&amp;gt;"/&amp;gt;
  &amp;lt;/nav&amp;gt;
        &amp;lt;!-- end Secondary Navigation Menu --&amp;gt;
    &amp;lt;/CurrentNavController:LeftNavController&amp;gt;
 &amp;lt;/asp:ContentPlaceHolder&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;u&gt;The CSS:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;/* Hide all ul.static elements */
.s4-ql ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static {
 display:none;
}
.s4-ql ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static {
 display:none;
}
.s4-ql ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static {
 display:none;
}
.s4-ql ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static {
 display:none;
}
.s4-ql ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static {
 display:none;
}
.s4-ql ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static &amp;gt; li.static &amp;gt; ul.static {
 display:none;
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;u&gt;The jQuery/JavaScript Code:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;$(document).ready(function(){
  HandleCurrentNavigation();
});

//Hide unwanted current navigation items
function HandleCurrentNavigation() {
 $(".s4-ql li.selected").parent().show();
 $(".s4-ql li.selected &amp;gt; ul.static").show();
 
 $(".s4-ql li.selected").parent().parent().show();
 $(".s4-ql li.selected").parent().parent().parent().show();
 $(".s4-ql li.selected").parent().parent().parent().parent().show();   
 $(".s4-ql li.selected").parent().parent().parent().parent().parent().show();   
 $(".s4-ql li.selected").parent().parent().parent().parent().parent().parent().show();   
 $(".s4-ql li.selected").parent().parent().parent().parent().parent().parent().parent().show();      
}
&lt;/pre&gt;
&lt;br /&gt;
Make sure that you reference the CSS &amp;amp; jQuery/JavaScript code from your master page properly.&lt;br /&gt;
&lt;br /&gt;
If every thing is done properly, you can expect to see multiple levels of navigation in your current navigation control as shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-J50ym9iDiw8/TkyJcaIXsSI/AAAAAAAAFT4/mtD6gEKGu3c/s1600/Navigation+showing+4+levels.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-J50ym9iDiw8/TkyJcaIXsSI/AAAAAAAAFT4/mtD6gEKGu3c/s640/Navigation+showing+4+levels.png" width="374" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Thanks to Scott Tindall for all the hard work he put for building the custom control.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-1485846459258805655?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ryV8vFOmxs0ul9fdERAhIAaFYcE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ryV8vFOmxs0ul9fdERAhIAaFYcE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ryV8vFOmxs0ul9fdERAhIAaFYcE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ryV8vFOmxs0ul9fdERAhIAaFYcE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/SsOthd6F2AQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/1485846459258805655/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/08/how-to-customize-current-navigation.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1485846459258805655?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1485846459258805655?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/SsOthd6F2AQ/how-to-customize-current-navigation.html" title="How To Customize Current Navigation (Left Navigation) in SharePoint 2010 To Show Multiple Levels?" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-lIuBFxoWouY/TkyITQsVPXI/AAAAAAAAFTk/rsmGBqglW8w/s72-c/Navigation+showing+4+levels.JPG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/08/how-to-customize-current-navigation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MEQHoyfyp7ImA9WhRbEEs.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-6848722654015475889</id><published>2012-01-30T17:33:00.002-08:00</published><updated>2012-01-31T19:03:21.497-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-31T19:03:21.497-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Automatic Properties" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Anonymous Types" /><title>How to create a generic list with anonymous types in C# 3.X</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
How to create a generic list with anonymous types in C# 3.X&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Anonymous Types is a new feature that is introduced with C# 3.0&lt;br /&gt;
Anonymous types are particularly useful when querying and transforming data with LINQ.&lt;br /&gt;
&lt;br /&gt;
So what’s the difference between a normal type and an anonymous type?&lt;br /&gt;
First and most important: the anonymous type has no type name.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;In C# 2.0 and earlier, we had to give every type a name explicitly.&lt;br /&gt;
&lt;br /&gt;
For example,&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;class Person
{
&amp;nbsp; &amp;nbsp; private StringBuilder _personData;
&amp;nbsp; &amp;nbsp; public StringBuilder PersonData
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return _personData;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; { _personData = value; }
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; private String _personName;
&amp;nbsp; &amp;nbsp; public String PersonName
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get { return _personName; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; set { _personName = value; }
&amp;nbsp; &amp;nbsp; }
}&lt;/pre&gt;
&lt;pre class="csharp" name="code"&gt;&lt;/pre&gt;
In C# 3.X, we can use automatic properties and write the following:&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;class Person
{
&amp;nbsp; &amp;nbsp; public StringBuilder PersonData
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get; set;
&amp;nbsp; &amp;nbsp; }

&amp;nbsp; &amp;nbsp; public String PersonName
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; get; set;
&amp;nbsp; &amp;nbsp; }
}&lt;/pre&gt;
&lt;br /&gt;
Even better, in C# 3.X, we can use anonymous types and write the following:&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;var person = new Person { PersonData = new StringBuilder(),&amp;nbsp;PersonName&amp;nbsp;= String.Empty };&lt;/pre&gt;
So far so good.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
How to create a generic list of anonymous types given a single instance of an anonymous type?&lt;br /&gt;
&lt;br /&gt;
Creating a given list of types is easy.&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;List&amp;lt;Person&amp;gt; persons = new List&amp;lt;Person&amp;gt;();
persons.Add(new Person{&amp;nbsp;PersonData = new StringBuilder(),&amp;nbsp;PersonName&amp;nbsp;= String.Empty&amp;nbsp;});&lt;/pre&gt;
So how to create a generic list with anonymous types?&lt;br /&gt;
&lt;br /&gt;
Using a "list factory", this is possible.&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;var Person = new { PersonData = new StringBuilder(), PersonName = String.Empty };
var persons = MakeList(Person);

persons.Add(new { PersonData = new StringBuilder(), PersonName = "Chaitu" });
persons.Add(new { PersonData = new StringBuilder(), PersonName = "Scott" });

public static List&amp;lt;T&amp;gt; MakeList&amp;lt;T&amp;gt;(T itemOftype)
{
&amp;nbsp; &amp;nbsp;List&amp;lt;T&amp;gt; newList = new List&amp;lt;T&amp;gt;();
&amp;nbsp; &amp;nbsp;return newList;
}&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-6848722654015475889?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vRKMSGyRShSePCMgyq9c4NUMSN4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vRKMSGyRShSePCMgyq9c4NUMSN4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vRKMSGyRShSePCMgyq9c4NUMSN4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vRKMSGyRShSePCMgyq9c4NUMSN4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/VpNSIxYPn_c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/6848722654015475889/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/10/how-to-create-generic-list-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/6848722654015475889?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/6848722654015475889?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/VpNSIxYPn_c/how-to-create-generic-list-with.html" title="How to create a generic list with anonymous types in C# 3.X" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/10/how-to-create-generic-list-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEFQ3Y_fCp7ImA9WhRUGUo.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-5038677243423332585</id><published>2012-01-30T17:33:00.001-08:00</published><updated>2012-01-30T17:33:32.844-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T17:33:32.844-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Managed Metadata" /><category scheme="http://www.blogger.com/atom/ns#" term="Backup/Restore" /><title>SharePoint 2010 - How to Backup/Restore Managed Metadata from one farm to another?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
SharePoint 2010 - How to Backup/Restore Managed Metadata from one farm/environment to another?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You will be amazed by the lack of proper import/export functionality.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
It is quite a general requirement to migrate Managed Metadata Service / Termsets from one environment to the other.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;There are a few approaches to backup/restore managed metadata between environments.&lt;br /&gt;
&lt;br /&gt;
OOB, SharePoint 2010 allows for &lt;b&gt;ONLY&lt;/b&gt; importing managed metadata in CSV format. You are required to use Powershell / Object Model to build the csv file. &lt;a href="http://www.mylifeinaminute.com/2011/03/31/export-a-term-set-to-csv-with-identifiers-in-powershell/"&gt;Here&lt;/a&gt; is a script that can do it. Managed metadata terms and termsets each have a unique guid. If you take a backup of a site that is using managed metadata in some columns and restore this site into another environment, the guids don't match up. You will have to go through and re click each term and "wire it back up" so it's okay and doesn't show in red text. Paul Culmsee did a good job of explaining the same with nice screenshots &lt;a href="http://www.cleverworkarounds.com/2011/01/09/sp2010-migrating-managed-metadata-term-sets-to-another-farm-on-another-domain/"&gt;here&lt;/a&gt;. This is quite hectic especially if there is a lot of data.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The easiest and the effective approach is to &lt;b&gt;LIFT&lt;/b&gt; the managed metadata service application from one environment to the other. That way you can ensure that the guids of terms and termsets match.&lt;br /&gt;
&lt;br /&gt;
This process is done in PowerShell and involves exporting managed metadata service application first, then importing it in the target environment/farm.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Powershell Configuration:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Open PowerShell. You might get an error. “The local farm is not accessible”&lt;br /&gt;
If the farm admin account is used, this error won’t show up.&lt;br /&gt;
Make sure that the account that is used for deploying solutions / executing Powershell scripts has the following role memberships for SharePoint Config Database:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;public&lt;/li&gt;
&lt;li&gt;SharePoint_Shell_Access&lt;/li&gt;
&lt;li&gt;db_owner&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: left;"&gt;
Follow this article to fix the error: http://www.sharepointassist.com/2010/01/29/the-local-farm-is-not-accessible-cmdlets-with-featuredependencyid-are-not-registered/&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-fMD6EYP7SCQ/TqA7wkQ2THI/AAAAAAAAFVA/iA5Dfjw4MaQ/s1600/PowerShell+Permissions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/-fMD6EYP7SCQ/TqA7wkQ2THI/AAAAAAAAFVA/iA5Dfjw4MaQ/s400/PowerShell+Permissions.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Y8hjZVTuA3c/TqA1xJCEAOI/AAAAAAAAFUY/jvkm93VtzXQ/s1600/PowerShell+Permissions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;Powershell for Export:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
$mmsAppId= "App ID Guid Placeholder"&lt;br /&gt;
&lt;br /&gt;
$mmsproxy = Get-SPServiceApplicationProxy -Identity "Proxy ID Guid Placeholder"&lt;br /&gt;
&lt;br /&gt;
Export-SPMetadataWebServicePartitionData -Identity $mmsAppId -ServiceProxy $mmsproxy -Path "Path to save Exported file placeholder"&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;App ID Guid Placeholder:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Navigate to CA &amp;gt; Application Management &amp;gt; Manage Service Applications &amp;gt; Managed Metadata Service Application&lt;br /&gt;
&lt;br /&gt;
The App ID Guid Placeholder is the Guid that is highlighted in the below picture&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-2znlXFk6who/TqA3K41w3nI/AAAAAAAAFUg/DCawxU7YQBc/s1600/ManagedMetada+App+ID.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://2.bp.blogspot.com/-2znlXFk6who/TqA3K41w3nI/AAAAAAAAFUg/DCawxU7YQBc/s400/ManagedMetada+App+ID.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;i&gt;Proxy ID Guid Placeholder:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Navigate to CA &amp;gt; Application Management &amp;gt; Manage Service Applications &amp;gt; Managed Metadata Service Application&lt;br /&gt;
&lt;br /&gt;
Do not click on the Managed Metadata Service link and highlight it by clicking anywhere else in the row.&lt;br /&gt;
&lt;br /&gt;
Click “Properties” in the ribbon.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-sUN2w098_AQ/TqA3pIgOaAI/AAAAAAAAFUo/MlDupcCSO_M/s1600/ManagedMetada+App+Proxy+ID+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="229" src="http://1.bp.blogspot.com/-sUN2w098_AQ/TqA3pIgOaAI/AAAAAAAAFUo/MlDupcCSO_M/s400/ManagedMetada+App+Proxy+ID+1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Right click in the dialog and capture the appid as highlighted below:&lt;br /&gt;
&lt;br /&gt;
The App ID Guid Placeholder is the appid that is highlighted in the below picture&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-jFbCGnRwFRA/TqA4bVYokQI/AAAAAAAAFUw/bxcAH3QCyw0/s1600/ManagedMetada+App+Proxy+ID+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://3.bp.blogspot.com/-jFbCGnRwFRA/TqA4bVYokQI/AAAAAAAAFUw/bxcAH3QCyw0/s400/ManagedMetada+App+Proxy+ID+2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If you get an error “Export / Import failed due to insufficient rights”, you will have to open SQL Server Management Studio in the SQL Server machine and make sure that the service account used by managed metadata service application has bulkadmin rights in SQL Server.&lt;br /&gt;
&lt;br /&gt;
Give BulkAdmin rights to the managed metadata service account account as it is required for managed metadata service application import.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-kIVTzVMsuMA/TqA5Ouk96cI/AAAAAAAAFU4/tpmqzk00sAY/s1600/Bulk+Admin+Permissions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://2.bp.blogspot.com/-kIVTzVMsuMA/TqA5Ouk96cI/AAAAAAAAFU4/tpmqzk00sAY/s400/Bulk+Admin+Permissions.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Execute the PowerShell script again and the script should run fine.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;The Import Process:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Make sure that the exported backup file is &lt;b&gt;copied physically&lt;/b&gt; into the server that hosts SQL Server and make sure that it is accessible from the WFE where the PowerShell script is executed.&lt;br /&gt;
&lt;br /&gt;
Execute the below PowerShell commands.&lt;br /&gt;
&lt;br /&gt;
$mmsAppId= "App ID Guid Placeholder"&lt;br /&gt;
$mmsproxy = Get-SPServiceApplicationProxy -Identity "Proxy ID Guid Placeholder"&lt;br /&gt;
Import-SPMetadataWebServicePartitionData -Identity $mmsAppId -ServiceProxy $mmsproxy -Path "Exported file’s path placeholder" -OverwriteExisting;&lt;br /&gt;
&lt;br /&gt;
The "App ID Guid Placeholder" &amp;amp; "Proxy ID Guid Placeholder" will need to be identified using the same process above in the destination farm.&lt;br /&gt;
&lt;br /&gt;
&lt;b style="color: red;"&gt;Make sure to remove the bulkadmin permissions to the managed metadata service account as soon as you are done with the import/export process.&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-5038677243423332585?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sObCgJAjbtkwQm1Ao4bHkBOGBSA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sObCgJAjbtkwQm1Ao4bHkBOGBSA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sObCgJAjbtkwQm1Ao4bHkBOGBSA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sObCgJAjbtkwQm1Ao4bHkBOGBSA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/wowtoTEz7Qo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/5038677243423332585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/10/sharepoint-2010-how-to-backuprestore.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/5038677243423332585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/5038677243423332585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/wowtoTEz7Qo/sharepoint-2010-how-to-backuprestore.html" title="SharePoint 2010 - How to Backup/Restore Managed Metadata from one farm to another?" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-fMD6EYP7SCQ/TqA7wkQ2THI/AAAAAAAAFVA/iA5Dfjw4MaQ/s72-c/PowerShell+Permissions.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/10/sharepoint-2010-how-to-backuprestore.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIMQn4yfyp7ImA9WhRUGUo.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-7861161348615703184</id><published>2012-01-30T17:33:00.000-08:00</published><updated>2012-01-30T17:33:03.097-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T17:33:03.097-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Search" /><category scheme="http://www.blogger.com/atom/ns#" term="User Profiles" /><category scheme="http://www.blogger.com/atom/ns#" term="People Search" /><title>SharePoint 2010: User Profiles configured correctly but people search not working</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Is the user profiles service application configured correctly but people search not working?&lt;br /&gt;
&lt;br /&gt;
As you can see in the below screenshot, the user profile service is able to synchronize properly with AD and pull user profiles.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-R-9VqArs2RM/TqCEgkSiC1I/AAAAAAAAFVw/tA6mxTB41EU/s1600/User+Profile+Configuration.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://1.bp.blogspot.com/-R-9VqArs2RM/TqCEgkSiC1I/AAAAAAAAFVw/tA6mxTB41EU/s400/User+Profile+Configuration.JPG" width="500" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
When I searched for a user from a SharePoint site using people search results web part, no profiles were returned. I have also tried the query service web service&amp;nbsp;(/_vti_bin/search.asmx) with no luck.&lt;br /&gt;
&lt;div&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
I realized that the user profile service application was created after the search service application was created and therefore the SPS3&amp;nbsp;protocol&amp;nbsp;that SharePoint uses for reading profiles was not included in the content source definition and therefore the user profiles are not crawled.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Navigate to Central Administration &amp;gt; Application Management &amp;gt; Manage Service Applications &amp;gt; Search Service Application&lt;br /&gt;
&lt;br /&gt;
Click "Content Sources" link on the left hand side, and click on "Local SharePoint Sites" content source.&lt;br /&gt;
In the Start Addresses section, you will see a box with entries similar to those below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-6a4_GhG9Ts0/TqCIwLcmfnI/AAAAAAAAFV4/jJJvX1em1vQ/s1600/Content+Source+Config.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-6a4_GhG9Ts0/TqCIwLcmfnI/AAAAAAAAFV4/jJJvX1em1vQ/s1600/Content+Source+Config.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In the above screenshot, http://WDRP0980 is the web application that was created by default when SharePoint was installed. Add SPS3 entries for all the web applications that you would like Search Service to pick up. Similarly add SPS3S for HTTPS sites.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-w0lLOfzqBns/TqCJWiGoJjI/AAAAAAAAFWE/hXLZfsYfal0/s1600/Content+Source+Config2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-w0lLOfzqBns/TqCJWiGoJjI/AAAAAAAAFWE/hXLZfsYfal0/s1600/Content+Source+Config2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Run a full crawl and search should be able to pick up all the user profiles as well.&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-7861161348615703184?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D6DhV3E_3TO7BjC2wqYarHqFChY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D6DhV3E_3TO7BjC2wqYarHqFChY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D6DhV3E_3TO7BjC2wqYarHqFChY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D6DhV3E_3TO7BjC2wqYarHqFChY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/YL2dZjnZQgo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/7861161348615703184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/10/sharepoint-2010-user-profiles.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7861161348615703184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7861161348615703184?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/YL2dZjnZQgo/sharepoint-2010-user-profiles.html" title="SharePoint 2010: User Profiles configured correctly but people search not working" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-R-9VqArs2RM/TqCEgkSiC1I/AAAAAAAAFVw/tA6mxTB41EU/s72-c/User+Profile+Configuration.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/10/sharepoint-2010-user-profiles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04CR3o-fyp7ImA9WhRbF00.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-1908164783144340873</id><published>2012-01-30T17:32:00.000-08:00</published><updated>2012-02-08T04:59:26.457-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-08T04:59:26.457-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SPWebPartManager" /><title>Incomplete SharePoint 2010 SPWebPartManager and its events that are never raised</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Incomplete SharePoint 2010 SPWebPartManager and its events that are never raised&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The SPWebPartManager in&amp;nbsp;SharePoint 2010 is incomplete.&lt;br /&gt;
Some of its events are never raised and even if they are raised they don't work as expected.&lt;br /&gt;
&lt;br /&gt;
Recently I was working on a scenario where I had to restrict users from being able to add certain web parts to certain web part zones in the page.&lt;br /&gt;
&lt;br /&gt;
There is no such property in the web part zone that we can use to achieve this kind of functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;However there are other useful properties that a web part zone offers such as the below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" ID="Left" Title="loc:Left" AllowCustomization="false" &amp;nbsp; AllowLayoutChange="false" AllowPersonalization="false" LayoutOrientation="Vertical" LockLayout="true" &amp;nbsp;/&amp;gt; 
&lt;/pre&gt;
&lt;br /&gt;
None of the properties that the web part zone offers can fulfill my requirement.&lt;br /&gt;
&lt;br /&gt;
So as a quick solution, I have decided to use some events that are available in the SPWebPartManager. These events are supposed to be raised as soon as a web part is being added to a zone, after a web part is added to a zone,&amp;nbsp;a web part is being deleted from a zone, after a web part is deleted from a zone,&amp;nbsp;a web part is being moved from a zone to a different zone, after a web part is moved from a zone to another zone.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;SPWebPartManager.WebPartAdding
SPWebPartManager.WebPartAdded
SPWebPartManager.WebPartDeleting
SPWebPartManager.WebPartDeleted
SPWebPartManager.WebPartMoving
SPWebPartManager.WebPartMoved&lt;/pre&gt;
&lt;br /&gt;
So I started off with developing a web control that has a very basic delegate that gets SPWebPartManager object for the current page &amp;amp; stops the web part&amp;nbsp;&amp;nbsp;of type "ContentByQueryWebPart"&amp;nbsp;from being added if it is being added to the zone "ZoneRight" in my custom publishing page layout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;protected override void OnInit(EventArgs e)
{
&amp;nbsp; &amp;nbsp; WebPartManager wpm = WebPartManager.GetCurrentWebPartManager(this.Page);
&amp;nbsp; &amp;nbsp; if (wpm != null)
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wpm.WebPartAdding += delegate(object sender, WebPartAddingEventArgs we)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.Diagnostics.Debugger.Break();
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String webPartZoneId = we.Zone.ID;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Type type = we.WebPart.GetType();

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (webPartZoneId == "bodyAreaRightRail")
&amp;nbsp; &amp;nbsp; &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 (type.FullName.Equals("ContentByQueryWebPart"))
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &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.Cancel = true;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&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;/pre&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
Soon it became apparent that the code block inside the delegate is never reached by the compiler.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I have tried calling the delegate in various other ways.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;wpm.WebPartAdding += (sender, we) =&amp;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;&amp;nbsp;&amp;nbsp; System.Diagnostics.Debugger.Break();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String webPartZoneId = we.Zone.ID;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type type = we.WebPart.GetType();

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (webPartZoneId == "ZoneRight")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (type.FullName.Equals("ContentByQueryWebPart"))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.Cancel = true;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;/pre&gt;
&lt;br /&gt;
As none of them worked, I was intrigued to test the other events as well.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;nbsp;wpm.WebPartAdding += delegate(object sender, WebPartAddingEventArgs we)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; we.Cancel = true;
};

wpm.WebPartAdded += delegate(object sender, WebPartEventArgs we)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
};

wpm.WebPartDeleting += delegate(object sender, WebPartCancelEventArgs we)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; we.Cancel = true;
};

wpm.WebPartDeleted += delegate(object sender, WebPartEventArgs we)
{

};

wpm.WebPartMoving += delegate(object sender, WebPartMovingEventArgs we)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; we.Cancel = true;
};

wpm.WebPartMoved += delegate(object sender, WebPartEventArgs we)
{

};
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
Except the&amp;nbsp;WebPartAdded &amp;amp;&amp;nbsp;WebPartDeleting events, none of the others were raised.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Even though the&amp;nbsp;WebPartDeleting event was raised, the "we.Cancel = true;" did not do anything. The web part got deleted.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
As my next trial, I have tried to create a custom SPWebPartManager control that is inherited from the OOB SPWebPartManager control. Very quickly I realized that the SPWebPartManager is a sealed control and therefore cannot be inherited. Excellent!!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Some one suggested that the code should run in the master page / page layout not from a web control and so I moved the above code snippet to OnInit event of the master page. Same results !!&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
So the SPWebPartManager is buggy with incomplete events that are never raised.&lt;/div&gt;
&lt;div&gt;
The other quickest way to handle the OnWebPartAdding event for my requirement is through JavaScript / JQuery.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Saved the below JS into a file called&amp;nbsp;RestrictWebPartAdditionForPageLayoutX.js and copy it into the folder&amp;nbsp;/Style Library/Scripts/&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;ExecuteOrDelayUntilScriptLoaded(HandleWebPartAddition, "wpadder.js");

function HandleWebPartAddition() {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the add button from the web part adding panel
&amp;nbsp;&amp;nbsp;&amp;nbsp; var btnAdd = $("div.ms-wpadder-buttonArea button:first-child");
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Remove the inline click event handler
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnAdd.removeAttr('onclick');
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Attach your own event handler using JQUERY!!
&amp;nbsp;&amp;nbsp;&amp;nbsp; btnAdd.click(function () {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get the webpart of object, this comes from the wpadder.js, where the WPAdder object instance is found giving all //properties on the selected webpart item
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var selectedWp = WPAdder._getSelectedItem();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Using the same object instance you can get the selected zone id, the zone you have selected for adding the webpart
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var zoneId = WPAdder._getZoneSelect().value;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Prepare a collection of web parts that you do not want added
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var webParts = new Array("Content Query", "Search Core Results", "Announcements", "Calendar", "Documents", "Shared Documents", "Team Documents", "Pictures", "Pages", "Images");

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Prepare a collection of web part zones that you do not want the above web parts added
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var webPartZoneIDs = new Array(-1,1,2,3,4);

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check the title of the selected webpart for whatever name you want. You can also use id of the web part
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var canAddWebPart = true;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; webParts.length; i++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (selectedWp.title.indexOf(webParts[i]) &amp;gt;= 0) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 the webpart is the one you don't want user to add in specific location, check the zone next
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (var j = 0; j &amp;lt; webPartZoneIDs.length; j++) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (zoneId == webPartZoneIDs[j]) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 the zone is not where the web part should be, give the message and return
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('This web part is not allowed here');
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; canAddWebPart = false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&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 (canAddWebPart == true) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //If all is correct just let the webpart be added to the page gracefully!!
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WPAdder.addSelectedItemToPage();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; });
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
Then I opened up the page layout where I wanted this functionality from SharePoint Designer by right clicking the page layout and by choosing "Edit in advanced mode".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Added the below line to include my custom JS file.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;script type="text/javascript" src="/Style Library/Scripts/RestrictWebPartAdditionForPageLayoutX.js" /&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Voilà!! Now users see the below when they try to add any of the web parts that I do not want them to add. (to the zones I do not want them to add to)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-w6Zbq8MfOCA/TzJxmzeoHpI/AAAAAAAAFiU/S28Tbqiy3_g/s1600/AddWebPartToZone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-w6Zbq8MfOCA/TzJxmzeoHpI/AAAAAAAAFiU/S28Tbqiy3_g/s640/AddWebPartToZone.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
If you really want to do something while the web part is being deleted or moved or added, you might want to take the approach of developing a custom HttpModule as described in this &lt;a href="http://blogs.msdn.com/b/nishand/archive/2009/09/21/spwebpartmanager-doesn-t-honour-the-webpartcanceleventargs-cancel-value-while-deleting-the-webpart.aspx" target="_blank"&gt;super nice post&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-1908164783144340873?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yi14dv42jtnWhMxxy0nzdK7UFIA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yi14dv42jtnWhMxxy0nzdK7UFIA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yi14dv42jtnWhMxxy0nzdK7UFIA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yi14dv42jtnWhMxxy0nzdK7UFIA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/9pxT3wcQZjU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/1908164783144340873/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/11/incomplete-sharepoint-2010.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1908164783144340873?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1908164783144340873?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/9pxT3wcQZjU/incomplete-sharepoint-2010.html" title="Incomplete SharePoint 2010 SPWebPartManager and its events that are never raised" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-w6Zbq8MfOCA/TzJxmzeoHpI/AAAAAAAAFiU/S28Tbqiy3_g/s72-c/AddWebPartToZone.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/11/incomplete-sharepoint-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UBQH08cSp7ImA9WhRVGUQ.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-6202587624848577209</id><published>2012-01-19T08:40:00.000-08:00</published><updated>2012-01-19T08:40:51.379-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-19T08:40:51.379-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="GAC" /><title>How to enable drag/drop of files in Visual Studio 2010 / GAC when running as an administrator?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
How to allow drag/drop of files in Visual Studio 2010 / GAC when running as an administrator?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
When running as administrator in Windows Server 2008, programs such as Visual Studio 2010, GAC (explorer) wont allow users with even administrator rights to be able to drag and drop files.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Chris posted a work around for this issue &lt;a href="http://blogs.msdn.com/b/mossbiz/archive/2010/06/10/add-an-assembly-to-the-global-assembly-cache-on-windows-server-2008-r2.aspx" target="_blank"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-6202587624848577209?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VZQCIWj_l7IyQmJ4ADyZAayc4fo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VZQCIWj_l7IyQmJ4ADyZAayc4fo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VZQCIWj_l7IyQmJ4ADyZAayc4fo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VZQCIWj_l7IyQmJ4ADyZAayc4fo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/NdikqiA_aJs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/6202587624848577209/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2012/01/how-to-enable-dragdrop-of-files-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/6202587624848577209?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/6202587624848577209?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/NdikqiA_aJs/how-to-enable-dragdrop-of-files-in.html" title="How to enable drag/drop of files in Visual Studio 2010 / GAC when running as an administrator?" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2012/01/how-to-enable-dragdrop-of-files-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ERHg9fyp7ImA9WhRQGE0.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-7286100395537840080</id><published>2011-12-13T12:25:00.000-08:00</published><updated>2011-12-13T12:25:05.667-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-13T12:25:05.667-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Search" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint search results" /><category scheme="http://www.blogger.com/atom/ns#" term="Content Query Web Part" /><title>How to display source site title in Content Query Web Part and Search Results?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
How to display source site title in Content Query Web Part and Search Results?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It is a not so uncommon requirement to group documents / list items by sites and display the site title for each group.&lt;br /&gt;
&lt;br /&gt;
Content Query Web Part returns lot of data but site title is not returned by it by default.&lt;br /&gt;
&lt;br /&gt;
SharePoint search service application does not come with&amp;nbsp;property for site name or site title by default but luckily sharepoint search crawls and indexes site name as ows_sitename&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;CQWP:&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
In the .webpart file there is a property called ViewFieldsOverride. This property overrides the fields that are loaded by the CQWP. This gives us an opportunity to add the Listname when querying the data.&lt;br /&gt;
&lt;br /&gt;
Since we are overriding it, we first need to add the default fields (Title, Created etc) manually. After that, we add the listname and sitename using the &lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;ListProperty Name="Title" /&amp;gt;&lt;/span&gt;&lt;/i&gt; and &lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;i&gt;&amp;lt;ProjectProperty Name="Title" /&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: white; color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;property name="ViewFieldsOverride" type="string"&amp;gt;&amp;lt;![CDATA[&amp;lt;FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Nullable="True" Type="Text" /&amp;gt;&amp;lt;FieldRef ID="{94f89715-e097-4e8b-ba79-ea02aa8b7adb}" Nullable="True" Type="Lookup" /&amp;gt;&amp;lt;FieldRef ID="{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}" Nullable="True" Type="Counter" /&amp;gt;&amp;lt;FieldRef ID="{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}" Nullable="True" Type="DateTime" /&amp;gt;&amp;lt;FieldRef ID="{1df5e554-ec7e-46a6-901d-d85a3881cb18}" Nullable="True" Type="User" /&amp;gt;&amp;lt;FieldRef ID="{d31655d1-1d5b-4511-95a1-7a09e9b75bf2}" Nullable="True" Type="User" /&amp;gt;&amp;lt;FieldRef ID="{8c06beca-0777-48f7-91c7-6da68bc07b69}" Nullable="True" Type="DateTime" /&amp;gt;&amp;lt;FieldRef Name="PublishingRollupImage" Nullable="True" Type="Image" /&amp;gt;&amp;lt;FieldRef Name="_Level" Nullable="True" Type="Number" /&amp;gt;&amp;lt;FieldRef Name="Comments" Nullable="True" Type="Note" /&amp;gt;&amp;lt;ListProperty Name="Title" /&amp;gt;&amp;lt;ProjectProperty Name="Title" /&amp;gt;]]&amp;gt;&amp;lt;/property&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Now it’s simply a matter of displaying the property in my custom XSL using:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: blue;"&gt;&lt;i style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&amp;lt;xsl:value-of select=”@ProjectProperty.Title”/&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i style="font-family: 'Courier New', Courier, monospace; font-size: small;"&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit;"&gt;&lt;u&gt;Search Results:&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; font-family: inherit;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;There is no metadata property that comes OOTB for site title by the&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;Search Service Application&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;. Site name is being crawled and indexed as &lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;ows_sitename&lt;/span&gt;&lt;/i&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;To make this property available in search results, simply create a new Managed Property called "&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;SiteTitle"&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&amp;nbsp;and map it to ows_sitename.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;In search core results web part's fetched properties, add a new column using&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: blue; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&amp;lt;Column Name=”SiteTitle”/&amp;gt;&lt;/span&gt;&lt;/i&gt; and use it to display in your custom XSLT.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white;"&gt;References:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://brendannewell.com/musings/?p=81"&gt;http://brendannewell.com/musings/?p=81&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://sharepoint-tweaking.blogspot.com/2008/04/displaying-listname-and-sitename-when.html"&gt;http://sharepoint-tweaking.blogspot.com/2008/04/displaying-listname-and-sitename-when.html&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-7286100395537840080?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bmn2uby1rI7B2pwCRAbK_l8ysxY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bmn2uby1rI7B2pwCRAbK_l8ysxY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bmn2uby1rI7B2pwCRAbK_l8ysxY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bmn2uby1rI7B2pwCRAbK_l8ysxY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/x4KY3218xJI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/7286100395537840080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/12/how-to-display-source-site-title-in.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7286100395537840080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7286100395537840080?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/x4KY3218xJI/how-to-display-source-site-title-in.html" title="How to display source site title in Content Query Web Part and Search Results?" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/12/how-to-display-source-site-title-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QASXg-fyp7ImA9WhRRFko.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-1929298929387689365</id><published>2011-11-30T08:15:00.001-08:00</published><updated>2011-11-30T10:55:48.657-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-30T10:55:48.657-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Calendar" /><category scheme="http://www.blogger.com/atom/ns#" term="Scrolling Bug" /><title>SharePoint 2010 calendar's "Add" button issues after fixing the scrolling bug</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
How to fix&amp;nbsp;SharePoint 2010 calendar's "Add" button issues after fixing the scrolling bug&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Every SharePoint designer must have bumped across the scrolling issue with SharePoint 2010 master pages.&lt;br /&gt;
&lt;br /&gt;
Kyle Schaeffer &amp;amp; Greg Galipeau have already written&amp;nbsp;&lt;a href="http://kyleschaeffer.com/sharepoint/sharepoint-2010-scrolling/" target="_blank"&gt;excellent post 1&lt;/a&gt;&amp;nbsp;&amp;amp; &lt;a href="http://www.greggalipeau.com/2011/01/28/a-better-enhanced-sharepoint-2010-floating-ribbon/" target="_blank"&gt;excellent post 2&lt;/a&gt;&amp;nbsp;about this issue and how to fix it and so I am not going into details of the issue and how to fix it.&lt;br /&gt;
&lt;br /&gt;
Of course, with any solution that changes the core way a system works, there is 
bound to be issues. One such issue is with the OOB calendar web part's "Add" button.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Let me explain the issue with "Add" buttons in calendars.&lt;br /&gt;
&lt;br /&gt;
When you hover over a day in the SharePoint calendar the "add new" link comes 
up. This isn't working "exactly" right in our solution. The reason is, if you 
scroll down on the page and then hover over a calendar item, the "add new" link 
shows up in the wrong calendar day. It works perfectly fine if you don't have to 
scroll down (the issue only happens when you scroll).&lt;br /&gt;
&lt;br /&gt;
Take a look at the screen shot below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ucXW5x11Bjo/TtZZIGtXgaI/AAAAAAAAFe0/Mc5xmSJoAjY/s1600/Calendar+No+Scroll.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="412" src="http://3.bp.blogspot.com/-ucXW5x11Bjo/TtZZIGtXgaI/AAAAAAAAFe0/Mc5xmSJoAjY/s640/Calendar+No+Scroll.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As you can see in the above screenshot, the page has not been scrolled and so the calendar works as expected. I hovered over the cell 7/1T and the "Add" button popped up in the right place.&lt;br /&gt;
&lt;br /&gt;
Now I scrolled down a little bit in the page as shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-55YoTfdAMwc/TtZZsOdAkjI/AAAAAAAAFe8/JcIpMiVhakE/s1600/Calendar+With+Scroll.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="414" src="http://1.bp.blogspot.com/-55YoTfdAMwc/TtZZsOdAkjI/AAAAAAAAFe8/JcIpMiVhakE/s640/Calendar+With+Scroll.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
In the above screenshot, I hovered over the cell 4/28M and the "Add" button popped up in the wrong cell (7/28M). This is a side effect due to fixing the scroll issue.&lt;br /&gt;
&lt;br /&gt;
Greg Galipeau explained a work around for this issue in his &lt;a href="http://www.greggalipeau.com/2011/01/28/a-better-enhanced-sharepoint-2010-floating-ribbon/" target="_blank"&gt;post&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
According to Greg's post, the javascript needs to be saved into the file system (LAYOUTS/1033) which could be quite a limitation for designers. Designers may or may not have access to SharePoint's file system.&lt;br /&gt;
&lt;br /&gt;
So I have decided to save this file in SharePoint as opposed to the physical file system.&lt;br /&gt;
&lt;br /&gt;
Save the below JavaScript into "calendarAddPositionFix.js" and save it into "Style Library/Scripts"&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;/* ################## Start Calendar Fixes #################### */

function MenuHtc_GetElementPosition(element, relativeToElement)

{

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;var result=new Object();

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;result.x=0;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;result.y=0;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;result.width=0;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;result.height=0;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if (element.offsetParent) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;var parent=element;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;while (parent !=null &amp;amp;&amp;amp;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;parent !=relativeToElement)

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;{

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;result.x+=parent.offsetLeft;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;result.y+=parent.offsetTop;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;AdjustScrollPosition(parent, relativeToElement, result);

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;var parentTagName=parent.tagName.toLowerCase();

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if (parentTagName !="body" &amp;amp;&amp;amp;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;parentTagName !="html" &amp;amp;&amp;amp;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;parent.clientTop !=null &amp;amp;&amp;amp;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;parent.clientLeft !=null &amp;amp;&amp;amp;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;parent !=element) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;result.x+=parent.clientLeft;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;result.y+=parent.clientTop;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;parent=parent.offsetParent;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}



&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //This is the custom code added to account for scrolling

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //when the code has been customized to not use

&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //overflows in the s4-workspace

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.x -= document.documentElement.scrollLeft;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.y -= document.documentElement.scrollTop;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else if (element.offsetLeft || element.offsetTop) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.x=element.offsetLeft;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.y=element.offsetTop;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (element.x) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;result.x=element.x;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if (element.y) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;result.y=element.y;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;if (element.offsetWidth &amp;amp;&amp;amp; element.offsetHeight) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.width=element.offsetWidth;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.height=element.offsetHeight;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;else if (element.style &amp;amp;&amp;amp; element.style.pixelWidth &amp;amp;&amp;amp; element.style.pixelHeight) {

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.width=element.style.pixelWidth;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;result.height=element.style.pixelHeight;

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}

&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;return result;

}

/* ################## End Calendar Fixes #################### */

&lt;/pre&gt;
&lt;div&gt;
Open your master page and locate the below tag:&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;lt;SharePoint:ScriptLink language="javascript" name="core.js" OnDemand="true" runat="server" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replace the above tag with the below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;SharePoint:ScriptLink language="javascript" name="core.js" Defer="true" runat="server"/&amp;gt;&lt;br /&gt;
&amp;lt;script type="text/javascript" defer="defer" src="/Style%20Library/Scripts/calendarAddPositionFix.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check-In/Publish your master page and the calendars should work fine now.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-1929298929387689365?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dkKlupA_8BYTBPYMxWoyys-xppc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dkKlupA_8BYTBPYMxWoyys-xppc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dkKlupA_8BYTBPYMxWoyys-xppc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dkKlupA_8BYTBPYMxWoyys-xppc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/ohzxzcJ4CHo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/1929298929387689365/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/11/sharepoint-2010-calendar-add-button.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1929298929387689365?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1929298929387689365?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/ohzxzcJ4CHo/sharepoint-2010-calendar-add-button.html" title="SharePoint 2010 calendar's &quot;Add&quot; button issues after fixing the scrolling bug" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ucXW5x11Bjo/TtZZIGtXgaI/AAAAAAAAFe0/Mc5xmSJoAjY/s72-c/Calendar+No+Scroll.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/11/sharepoint-2010-calendar-add-button.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEFQ304eip7ImA9WhRSFEg.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-6696531634039401636</id><published>2011-11-16T06:47:00.001-08:00</published><updated>2011-11-16T07:50:12.332-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T07:50:12.332-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Site Template" /><category scheme="http://www.blogger.com/atom/ns#" term="Sandbox Solution" /><title>SharePoint 2010 - How to deactivate and delete a sandbox solution (site template) that throws exception from UI?</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
How to deactivate and delete a sandbox solution (site template) that throws exception from UI?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Created a SharePoint 2010 team site (web) and saved it as a site template.&lt;br /&gt;
Created a new site using the newly created site template.&lt;br /&gt;
Delete the site with which the site template was created.&lt;br /&gt;
&lt;br /&gt;
Attempted to deactivate the site template and it fails with the below exception:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;Unable to access web scoped feature (Id: GUID) because it references a non-existent or broken web (Id: GUID) on site 'url'.&amp;nbsp; Exception: System.ArgumentException: Value does not fall within the expected range.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span id="ctl00_PlaceHolderMain_LabelMessage"&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at Microsoft.SharePoint.SPWebCollection.get_Item(Guid id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;at Microsoft.SharePoint.SPFeatureEnumeratorBase.GetCachedWeb(SPSite site, Guid&amp;nbsp; webId, Guid featureId)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-nD3qqhO8gL4/TsPQP9ATmGI/AAAAAAAAFb0/vba8LsQ1S40/s1600/Deactivate+Sandbox+Solution+Error.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;img border="0" height="296" src="http://2.bp.blogspot.com/-nD3qqhO8gL4/TsPQP9ATmGI/AAAAAAAAFb0/vba8LsQ1S40/s400/Deactivate+Sandbox+Solution+Error.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
The reason why I am unable to delete the sandbox solution is because of a missing web (from the above error).&lt;br /&gt;
So I tried to restore the deleted site from recycle bin and then tried to deactivate the site template solution. It still did not work.&lt;br /&gt;
&lt;br /&gt;
After some trials and errors, research I noticed that after deleting the deleted sites permanently from recycle bin, I was able to deactivate and delete the solution.&lt;br /&gt;
&lt;br /&gt;
Navigate to Site Actions &amp;gt; Site Settings &amp;gt; Recycle Bin under Site Collection Administration&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-AuZO0pp1mww/TsPaES10imI/AAAAAAAAFb8/8Wf72nNue0I/s1600/Site+Collection+Recycle+Bin.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://3.bp.blogspot.com/-AuZO0pp1mww/TsPaES10imI/AAAAAAAAFb8/8Wf72nNue0I/s640/Site+Collection+Recycle+Bin.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Click on the link "Deleted from end user Recycle Bin". Find the site that was used to create the site template and delete it.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
The site template sandbox solution can now be deactivated and deleted.&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-6696531634039401636?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BAugTmrEQIN6T07owGHkQe4RpbU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BAugTmrEQIN6T07owGHkQe4RpbU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BAugTmrEQIN6T07owGHkQe4RpbU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BAugTmrEQIN6T07owGHkQe4RpbU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/-SU9VMLZX-w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/6696531634039401636/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/11/sharepoint-2010-how-to-deactivate-and.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/6696531634039401636?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/6696531634039401636?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/-SU9VMLZX-w/sharepoint-2010-how-to-deactivate-and.html" title="SharePoint 2010 - How to deactivate and delete a sandbox solution (site template) that throws exception from UI?" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-nD3qqhO8gL4/TsPQP9ATmGI/AAAAAAAAFb0/vba8LsQ1S40/s72-c/Deactivate+Sandbox+Solution+Error.PNG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/11/sharepoint-2010-how-to-deactivate-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8FSXw9eSp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-4678527624239399721</id><published>2011-11-11T08:49:00.001-08:00</published><updated>2011-11-12T11:56:58.261-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:56:58.261-08:00</app:edited><title>How to fix the Visual Studio Exception: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
How to fix the Visual Studio Exception: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Visual Studio (2010 in my case) throws an exception: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.&lt;br /&gt;
&lt;br /&gt;
I received this exception whenever I tried to debug even a basic solution. That means an empty Visual Studio solution using "ASP.NET 3.5 Website Project" template.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
I tried changing target framework from 3.5 to to 2.0 but that did not help. I thought this error could be due to a corrupted installation of Visual Studio 2010. So I attempted to repair it. That did not fix the issue. I then installed &amp;nbsp;Visual Studio 2010 SP1. That has not helped either.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Finally the below procedure fixed the issue:&lt;br /&gt;
&lt;br /&gt;
Open Visual Studio and click on the menu item "Window". Then click "Reset Window Layout" as shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/--TJQO6a5qkk/Tr1Tv6LpLDI/AAAAAAAAFa8/beMK_f0U7vk/s1600/VS2010+Access+Denied+Exception.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://3.bp.blogspot.com/--TJQO6a5qkk/Tr1Tv6LpLDI/AAAAAAAAFa8/beMK_f0U7vk/s640/VS2010+Access+Denied+Exception.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
Visual Studio does not throw the exception anymore.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-4678527624239399721?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iJBQLQ1YTEW0rIbn1NEzfeu_3cw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iJBQLQ1YTEW0rIbn1NEzfeu_3cw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iJBQLQ1YTEW0rIbn1NEzfeu_3cw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iJBQLQ1YTEW0rIbn1NEzfeu_3cw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/oxRrFQ4J18g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/4678527624239399721/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/11/visual-studio-exception-attempted-to.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/4678527624239399721?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/4678527624239399721?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/oxRrFQ4J18g/visual-studio-exception-attempted-to.html" title="How to fix the Visual Studio Exception: &quot;Attempted to read or write protected memory. This is often an indication that other memory is corrupt.&quot;" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/--TJQO6a5qkk/Tr1Tv6LpLDI/AAAAAAAAFa8/beMK_f0U7vk/s72-c/VS2010+Access+Denied+Exception.PNG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/11/visual-studio-exception-attempted-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8BRHgyfyp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-1213968793176087657</id><published>2011-10-01T16:45:00.000-07:00</published><updated>2011-11-12T11:57:35.697-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:57:35.697-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Error" /><category scheme="http://www.blogger.com/atom/ns#" term="Low Disk Space" /><title>SharePoint 2010 - Server error: The URL is invalid, it may refer to a nonexistent file or folder or refer to a valid file that is not in the current Web</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
SharePoint Designer throws the error "Server error: The URL is invalid, it may refer to a nonexistent file or folder or refer to a valid file that is not in the current Web" when you attempt to open/check-in/check-out/upload a file.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
While there could be many reasons for this misleading error to show up, one of the reason is low disk space in the database server.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;I noticed that the transaction log file for the SharePoint_Config database, "SharePoint_Config_Log.LDF" (resides in /Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data in our case) has grown enormously to 38 GB which is approximately 80% of the space in that drive.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Just run the below scripts to truncate the log file:&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;SQL Server 2008:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;USE [master]
GO
ALTER DATABASE[SharePoint_Config] SET RECOVERY SIMPLE WITH NO_WAIT
GO
USE [SharePoint_Config]
GO
DBCC SHRINKFILE ('SharePoint_Config_Log')
GO&lt;/pre&gt;
&lt;br /&gt;
&lt;u&gt;SQL Server 2005:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;BACKUP LOG [Sharepoint_Config] WITH TRUNCATE_ONLY
USE [SharePoint_Config]
GO
DBCC SHRINKFILE (N’SharePoint_Config_log’ , 50)
GO&lt;/pre&gt;
&lt;br /&gt;
The server is happy now and running fine.&lt;br /&gt;
&lt;br /&gt;
&lt;span id="goog_820871984"&gt;&lt;/span&gt;&lt;span id="goog_820871985"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-1213968793176087657?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UJuMqEQrNAsMV-atzPPqUXF8Pwo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UJuMqEQrNAsMV-atzPPqUXF8Pwo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UJuMqEQrNAsMV-atzPPqUXF8Pwo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UJuMqEQrNAsMV-atzPPqUXF8Pwo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/WN3OvuVijUE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/1213968793176087657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/10/sharepoint-2010-server-error-url-is.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1213968793176087657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1213968793176087657?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/WN3OvuVijUE/sharepoint-2010-server-error-url-is.html" title="SharePoint 2010 - Server error: The URL is invalid, it may refer to a nonexistent file or folder or refer to a valid file that is not in the current Web" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/10/sharepoint-2010-server-error-url-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8CRXk8eip7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-5572330233890293514</id><published>2011-10-01T15:36:00.000-07:00</published><updated>2011-11-12T11:57:44.772-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:57:44.772-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Publishing Page Layouts" /><category scheme="http://www.blogger.com/atom/ns#" term="Master Page" /><title>SharePoint 2010 - How to specify a different master page for a publishing page layout</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
How to&amp;nbsp;associate a different master page than the default master page for a publishing page layout in SharePoint 2010?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There may be scenarios when certain pages in a SharePoint site require associations with a different master page(s)..&lt;br /&gt;
&lt;br /&gt;
Typical examples could be pages that are required to be loaded inside SharePoint dialog boxes. These type of pages show up fine with minimal.master master page associated with them.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Applying “minimal.master” master page to a page layout "CustomDialogPages.aspx" did not work.&lt;br /&gt;
&lt;br /&gt;
When the page layout inherits from the 'PublishingLayoutPage' class the master page gets set on PreInit(), that's why it ignores what we put in the page directive.&lt;br /&gt;
&lt;br /&gt;
There are 2 possible ways to get this to work:&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;1.) Add the below inline code to your page layout. You can either use SharePoint Designer or download the page layout from page layouts gallary and update it, then upload it. (Recommended if you are not a developer or if you don't want to write code)&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;script runat="server" type="text/C#"&amp;gt;
protected override void OnPreInit(EventArgs e)
{
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; base.OnPreInit(e);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.MasterPageFile = "/_catalogs/masterpage/minimal.master";
}
&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;div&gt;
As SharePoint does not allow inline scripts, it throws error “Code Block are not allowed in this file“&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
To get rid of this error, the page layouts that use inline code will need to be included in the pageparserpaths node in web.configs in all WFEs as shown below:&lt;/div&gt;
&lt;pre class="csharp" name="code"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;PageParserPaths&amp;gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;PageParserPath VirtualPath="/_catalogs/masterpage/CustomDialogPages.aspx" CompilationMode="Always" AllowServerSideScript="true" /&amp;gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/PageParserPaths&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
2.)&amp;nbsp;Create a custom base class that inherits from the 'PublishingLayoutPage' class and override it's PreInit() method Then just change the layout to inherit from that class instead.&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;nbsp; &amp;nbsp; /// &amp;lt;summary&amp;gt;
&amp;nbsp; &amp;nbsp; /// The base class which all of our dialogues will use.
&amp;nbsp; &amp;nbsp; /// &amp;lt;/summary&amp;gt;
&amp;nbsp; &amp;nbsp; public class MinimalPublishingLayoutPage : PublishingLayoutPage
&amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected override void OnPreInit(EventArgs e)
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; base.OnPreInit(e);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this.MasterPageFile = "/_catalogs/masterpage/minimal.master";
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; }&lt;/pre&gt;
&lt;div&gt;
Associate the new class with required page layout(s)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Change the "Inherits" property in the below tag:&lt;/div&gt;
&lt;div&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;%@ Page language="C#" &amp;nbsp; Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" meta:progid="SharePoint.WebPartPage.Document" meta:webpartpageexpansion="full" %&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
to&lt;/div&gt;
&lt;div&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;%@ Page language="C#" &amp;nbsp; Inherits="Namespace.MinimalPublishingLayoutPage, Assembly, Version=Version Number, Culture=neutral, PublicKeyToken=Token" meta:progid="SharePoint.WebPartPage.Document" meta:webpartpageexpansion="full" %&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Now any pages that use page layouts that are inherited from our custom pagelayout class will use minimal.master master page.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-5572330233890293514?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PT7GHZeBtI6DgPQDwrEniuhguWc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PT7GHZeBtI6DgPQDwrEniuhguWc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PT7GHZeBtI6DgPQDwrEniuhguWc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PT7GHZeBtI6DgPQDwrEniuhguWc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/47Au2MAAOhg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/5572330233890293514/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/10/sharepoint-2010-how-to-specify.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/5572330233890293514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/5572330233890293514?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/47Au2MAAOhg/sharepoint-2010-how-to-specify.html" title="SharePoint 2010 - How to specify a different master page for a publishing page layout" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/10/sharepoint-2010-how-to-specify.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8DRXwyeSp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-4593775293553990218</id><published>2011-08-17T10:44:00.000-07:00</published><updated>2011-11-12T11:57:54.291-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:57:54.291-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Debug" /><category scheme="http://www.blogger.com/atom/ns#" term="WSPBuilder" /><title>A shortcut to debug SharePoint 2010 Solutions</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
All of us who worked on developing SharePoint 2010 solutions are aware of the&amp;nbsp;frustration&amp;nbsp;involved with debugging them.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;Why?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Visual Studio 2010 has introduced F5 debugging support with SharePoint solutions but it is often hard to use it with solutions like workflows, event recievers, custom controls. We still have to go to the Debug menu and choose "Attach to process...", then attach to all the available IIS worker processes (w3wp.exe processes) as shown below:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-lG2TQM2P0TI/Tkv5kG46r6I/AAAAAAAAFTY/VHxFmShyPI8/s1600/Attach+Debugger+Manually.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://3.bp.blogspot.com/-lG2TQM2P0TI/Tkv5kG46r6I/AAAAAAAAFTY/VHxFmShyPI8/s400/Attach+Debugger+Manually.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
There is a shortcut to attach the debugger to all the IIS worked processes as demonstrated by&amp;nbsp;&amp;nbsp;&lt;a href="http://greghurlman.com/"&gt;Greg Hurlman&lt;/a&gt; in his session at SharePoint Saturday the Conference.&lt;br /&gt;
&lt;br /&gt;
Download "WSP Builder Extensions 2010" from Codeplex.&lt;br /&gt;
The current version as of the day of writing this post can be found at&amp;nbsp;&lt;a class="FileNameLink" href="http://wspbuilder.codeplex.com/releases/30858/download/94507" id="fileDownload3" tabindex="9"&gt;WSPBuilder Extensions 2010 BETA 1.4&lt;/a&gt;&lt;br /&gt;
Install it.&lt;br /&gt;
&lt;br /&gt;
Open Visual Studio 2010 and open a SharePoint solution.&lt;br /&gt;
Right click a project in the solution and choose "WSPBuilder" then "Attach to IIS Worker Processes" as shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-baOCPj9MleE/Tkv8DJChZlI/AAAAAAAAFTc/mjpeumCrTN8/s1600/WSPBuilder-Attach+to+IIS+Worked+Processes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="345" src="http://1.bp.blogspot.com/-baOCPj9MleE/Tkv8DJChZlI/AAAAAAAAFTc/mjpeumCrTN8/s400/WSPBuilder-Attach+to+IIS+Worked+Processes.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You can also use keyboard shortcut Ctrl + Shift + Alt + B and then A to do the same.&lt;br /&gt;
&lt;br /&gt;
Here is what you see after the above steps:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-_6rT_Vc-83s/Tkv9GVV_5rI/AAAAAAAAFTg/Z0Dg8tck98k/s1600/Attached+Debugger.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://4.bp.blogspot.com/-_6rT_Vc-83s/Tkv9GVV_5rI/AAAAAAAAFTg/Z0Dg8tck98k/s400/Attached+Debugger.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
As you can notice in the above screenshot, all the IIS Worker Processes have been attached.&lt;br /&gt;
&lt;br /&gt;
Hope that this helps some one.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-4593775293553990218?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yoS76drIOTVFLilBD01LGIRyO2w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yoS76drIOTVFLilBD01LGIRyO2w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yoS76drIOTVFLilBD01LGIRyO2w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yoS76drIOTVFLilBD01LGIRyO2w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/lI9Qb5TYs4Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/4593775293553990218/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/08/shortcut-to-debug-sharepoint-2010.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/4593775293553990218?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/4593775293553990218?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/lI9Qb5TYs4Y/shortcut-to-debug-sharepoint-2010.html" title="A shortcut to debug SharePoint 2010 Solutions" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-lG2TQM2P0TI/Tkv5kG46r6I/AAAAAAAAFTY/VHxFmShyPI8/s72-c/Attach+Debugger+Manually.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/08/shortcut-to-debug-sharepoint-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8DSH0yfSp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-347362512138934389</id><published>2011-08-14T08:32:00.000-07:00</published><updated>2011-11-12T11:57:59.395-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:57:59.395-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Saturday" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Saturday The Conference" /><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010 Search" /><title>Slides from SharePoint Saturday: The Conference DC on 12th August 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
Here are the slides from&amp;nbsp;Slides from my SharePoint session given on August 12 2011 at SharePoint Saturday The Conference in Washington DC titled "Leverage Search and Customize to your Brand within SharePoint 2010" as promised.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;b&gt;Topic:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Leverage Search and Customize to your Brand within SharePoint 2010&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Details:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The enterprise search capabilities built in to SharePoint 2010 provide an easy win for organizations seeking to achieve a quick return on their SharePoint investment. This technical deep dive will include a discussion of search configuration best practices, strategies for maximizing SharePoint's capabilities, and simple customizations that can take your search experience to the next level.&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: white; color: #333333; font-family: Georgia, serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div id="__ss_8847913" style="width: 425px;"&gt;
&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/ChaituMadala/leverage-search-and-customize-to-your-brand-within-sharepoint-2010" title="Leverage Search and Customize to your Brand within SharePoint 2010"&gt;Leverage Search and Customize to your Brand within SharePoint 2010 - by Chaitu Madala&lt;/a&gt;&lt;/strong&gt;&lt;object height="355" id="__sse8847913" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=searchtosuccessinsp2010-110814102122-phpapp01&amp;stripped_title=leverage-search-and-customize-to-your-brand-within-sharepoint-2010&amp;userName=ChaituMadala" /&gt;
&lt;param name="allowFullScreen" value="true"/&gt;
&lt;param name="allowScriptAccess" value="always"/&gt;
&lt;embed name="__sse8847913" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=searchtosuccessinsp2010-110814102122-phpapp01&amp;stripped_title=leverage-search-and-customize-to-your-brand-within-sharepoint-2010&amp;userName=ChaituMadala" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-347362512138934389?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wyEjliU3FyPuoAAd8hNMZEMeXDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wyEjliU3FyPuoAAd8hNMZEMeXDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wyEjliU3FyPuoAAd8hNMZEMeXDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wyEjliU3FyPuoAAd8hNMZEMeXDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/tDJKZIh4vcU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/347362512138934389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/08/slides-from-sharepoint-saturday.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/347362512138934389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/347362512138934389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/tDJKZIh4vcU/slides-from-sharepoint-saturday.html" title="Slides from SharePoint Saturday: The Conference DC on 12th August 2011" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><georss:featurename>Washington, DC, USA</georss:featurename><georss:point>38.8951118 -77.0363658</georss:point><georss:box>38.793160300000004 -77.1415488 38.9970633 -76.9311828</georss:box><feedburner:origLink>http://www.chaitumadala.com/2011/08/slides-from-sharepoint-saturday.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8MR3c_eyp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-1957667703754981879</id><published>2011-08-02T15:12:00.000-07:00</published><updated>2011-11-12T11:58:06.943-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:58:06.943-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Cookie; JavaScript;" /><title>How to delete a cookie written by ASP.NET using client-side JavaScript</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;What?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Today I spent some time trying to understand why a JavaScript  function that I wrote to delete a cookie that was written by ASP.NET was  not deleting it properly.&lt;br /&gt;
&lt;br /&gt;
I finally managed to find the reason and thought it might be useful to write about it as it might help someone..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;b&gt;What is so different about it?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Just google / bing for "delete cookie using javascript" and you will see 100s of snippets to delete a cookie using javascript. In order to delete a cookie that was written by ASP.NET, we need to take a slightly different approach.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The cookie string used in JavaScript to delete it must match EXACTLY the cookie string sent by ASP.NET to save &lt;a class="itxtrst itxtrsta itxthook" href="http://www.blogger.com/post-create.g?blogID=7531459993417803686#" id="itxthook1" rel="nofollow" style="background-color: transparent; border-bottom: 0.07em solid darkgreen; color: darkgreen; font-size: 100%; font-weight: normal; padding-bottom: 1px; text-decoration: underline;"&gt;&lt;span class="itxtrst itxtrstspan itxthookspan" id="itxthook1w0" style="background-attachment: scroll; background-clip: initial; background-color: transparent; background-image: none; background-origin: initial; background-position: 0% 0%; background-repeat: repeat repeat; color: darkgreen; font-size: inherit; font-weight: inherit;"&gt;&lt;/span&gt;&lt;/a&gt;it.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;u&gt;ASP.NET sends the following&lt;/u&gt;:&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;cookiename=cookievalue; expires=gmtdate;  path=/
&lt;/pre&gt;
&lt;br /&gt;
&lt;i&gt;&lt;u&gt;The following JavaScript function successfully deletes a cookie but an ASP.NET cookie wont be deleted using the following:&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;function DeleteCookie(name){
&amp;nbsp;&amp;nbsp;&amp;nbsp; var expires = new Date();
&amp;nbsp;&amp;nbsp;&amp;nbsp; expires.setUTCFullYear(expires.getUTCFullYear() - 1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; document.cookie = name + '=; expires=' + expires.toUTCString();
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;u&gt;You have to use something along the lines of the following JavaScript to delete the cookie:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;function DeleteCookie(name) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; var expires = new Date();
&amp;nbsp;&amp;nbsp;&amp;nbsp; expires.setUTCFullYear(expires.getUTCFullYear() - 1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; document.cookie = name + '=; expires=' + expires.toUTCString() + '; path=/';
}
&lt;/pre&gt;
&lt;br /&gt;
Notice that the only difference is "path=/"&lt;br /&gt;
&lt;br /&gt;
It works both on IE and  Mozilla!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-1957667703754981879?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MOP7WUErCgMocldFY-AnGamwI3M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MOP7WUErCgMocldFY-AnGamwI3M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MOP7WUErCgMocldFY-AnGamwI3M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MOP7WUErCgMocldFY-AnGamwI3M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/P_azYOS2h0g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/1957667703754981879/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/08/how-to-delete-cookie-written-by-aspnet.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1957667703754981879?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1957667703754981879?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/P_azYOS2h0g/how-to-delete-cookie-written-by-aspnet.html" title="How to delete a cookie written by ASP.NET using client-side JavaScript" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/08/how-to-delete-cookie-written-by-aspnet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8NR3c9fyp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-5764810303156169801</id><published>2011-07-19T14:33:00.000-07:00</published><updated>2011-11-12T11:58:16.967-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:58:16.967-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Exception" /><title>SharePoint : System.InvalidOperationException: The farm is unavailable.</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You receive the below exception when you try to&amp;nbsp;access Central Admin / any SharePoint site.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Times New Roman', serif; font-size: 16px;"&gt;Event ID from Event Log - 3&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Times New Roman', serif; font-size: 16px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-family: 'Times New Roman', serif; font-size: 16px;"&gt;&lt;i&gt;System.ServiceModel.ServiceActivationException: The service '/SecurityTokenServiceApplication/securitytoken.svc' cannot be activated due to an exception during compilation.&amp;nbsp; The exception message is: Exception has been thrown by the target of an invocation.. ---&amp;gt; System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---&amp;gt; System.InvalidOperationException: The farm is unavailable.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="MsoNormal" style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt; text-autospace: none;"&gt;
&lt;span style="font-family: 'Times New Roman', serif; font-size: 12pt;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.Administration.Claims.SPSecurityTokenServiceManager.get_Local()&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt; text-autospace: none;"&gt;
&lt;span style="font-family: 'Times New Roman', serif; font-size: 12pt;"&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; at Microsoft.SharePoint.IdentityModel.SPSecurityTokenServiceConfiguration..ctor()&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt; text-autospace: none;"&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Resolution:&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="margin-bottom: 5.0pt; margin-left: 0in; margin-right: 0in; margin-top: 5.0pt; text-autospace: none;"&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Open IIS&lt;/li&gt;
&lt;li&gt;Go to Application Pools&lt;/li&gt;
&lt;li&gt;Find the security token application pool and click on "Advanced Settings"&lt;/li&gt;
&lt;li&gt;If you notice that the value for “enable 32-bit applications” was set to true, change this to false&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-5764810303156169801?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FiIAbnogmoPAKr8uUWr6UFbadVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FiIAbnogmoPAKr8uUWr6UFbadVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FiIAbnogmoPAKr8uUWr6UFbadVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FiIAbnogmoPAKr8uUWr6UFbadVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/w9qfvgnAIAU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/5764810303156169801/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/07/sharepoint-systeminvalidoperationexcept.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/5764810303156169801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/5764810303156169801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/w9qfvgnAIAU/sharepoint-systeminvalidoperationexcept.html" title="SharePoint : System.InvalidOperationException: The farm is unavailable." /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/07/sharepoint-systeminvalidoperationexcept.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUCSXc5eSp7ImA9WhdSFUg.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-7435842852714734687</id><published>2011-07-14T18:45:00.000-07:00</published><updated>2011-07-24T18:11:08.921-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-24T18:11:08.921-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Saturday" /><title>Speaking at SharePoint Saturday The Conference on Aug 13 2011</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I will be speaking at SharePoint Saturday The Conference on Aug 13 2011&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Topic:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Leverage Search and Customize to your Brand within SharePoint 2010&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Details:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The enterprise search capabilities built in to SharePoint 2010 provide an easy win for organizations seeking to achieve a quick return on their SharePoint investment. This technical deep dive will include a discussion of search configuration best practices, strategies for maximizing SharePoint's capabilities, and simple customizations that can take your search experience to the next level.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Location:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Nothern Virginia Community College &lt;a href="http://www.spstc.org/Pages/About.aspx"&gt;http://www.spstc.org/Pages/About.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Link:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.spstc.org/SitePages/Sessions.aspx?SessionID=28"&gt;http://www.spstc.org/SitePages/Sessions.aspx?SessionID=28&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-7435842852714734687?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bwxfF12tlQpBRcd2Yw0StXplFVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bwxfF12tlQpBRcd2Yw0StXplFVY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bwxfF12tlQpBRcd2Yw0StXplFVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bwxfF12tlQpBRcd2Yw0StXplFVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/4x23rSpWUeU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/7435842852714734687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/07/speaking-at-sharepoint-saturday.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7435842852714734687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7435842852714734687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/4x23rSpWUeU/speaking-at-sharepoint-saturday.html" title="Speaking at SharePoint Saturday The Conference on Aug 13 2011" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/07/speaking-at-sharepoint-saturday.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ESXg-eyp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-2332038571219632383</id><published>2011-07-10T20:17:00.000-07:00</published><updated>2011-11-12T11:58:28.653-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:58:28.653-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Search Exception" /><category scheme="http://www.blogger.com/atom/ns#" term="Architecture" /><title>SharePoint 2010 - Search Error - The search service is not able to connect to the machine that hosts the administration component</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
We recently ran across an issue that prevented the SharePoint Server 2010 from starting with the below exception:&lt;br /&gt;
&lt;br /&gt;
"The search service is not able to connect to the machine that hosts the administration component"&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-MYcicm9ZqKI/ThpdcJVIkLI/AAAAAAAAFSc/mqjvML0oYyo/s1600/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-MYcicm9ZqKI/ThpdcJVIkLI/AAAAAAAAFSc/mqjvML0oYyo/s1600/1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
When I clicked on any link in the left navigation in search administration interface inside Central Administration, I was greeted with the below exception:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-1nc1XDkrwlM/Thpd1r8bXoI/AAAAAAAAFSg/YVVbE1wJHgI/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-1nc1XDkrwlM/Thpd1r8bXoI/AAAAAAAAFSg/YVVbE1wJHgI/s1600/2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
The application pool in IIS that the search service uses is found in stopped state. It stops automatically as soon as it is started.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-7_8pdou1Qqg/Thpf1qa2cQI/AAAAAAAAFSk/_hZsh5DfFd0/s1600/AppPools.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-7_8pdou1Qqg/Thpf1qa2cQI/AAAAAAAAFSk/_hZsh5DfFd0/s1600/AppPools.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
After hours of research, we have found that it was all happening due to an AD&amp;nbsp;policy set in domain controller that was not allowing certain service accounts from being able to start services and application pools&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Here are the steps we followed to fix this issue:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;First we did a complete rebuild including the OS&lt;/li&gt;
&lt;li&gt;Then the search service worked&amp;nbsp;but a service account was not able to start search service and the Web Services Default App Pool.. (sp2010sa account in our case)&lt;/li&gt;
&lt;li&gt;We then updated the group policies in AD to allow the service accounts to have "logon as a batch" job rights&lt;/li&gt;
&lt;li&gt;We had a problem in pushing the group policy to client(s).&amp;nbsp;For that change to take place in the servers in the domain, we had to take the servers out of the domain and re add them..&lt;/li&gt;
&lt;li&gt;So we removed computer(s) from domain, computer account was not created in the correct&amp;nbsp;Organizational&amp;nbsp;Unit(OU). New policy was forced as an update on the computer. So we removed the computer from the domain and rejoined to the domain..&lt;/li&gt;
&lt;li&gt;In this process SharePoint Config DB got corrupted and so CA was gone&lt;/li&gt;
&lt;li&gt;So we uninstalled SP 2010 again, removed all the SP databases and re-installed SP 2010&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;Summary:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In short, before installing SharePoint, make sure that you follow the least&amp;nbsp;privileged&amp;nbsp;approach and create all required service accounts. This &lt;a href="http://www.sharepointpromag.com/article/sharepoint/Least-Privilege-Service-Accounts-for-SharePoint-2010?cpage=2"&gt;article here&amp;nbsp;&lt;/a&gt;&amp;nbsp;describes&amp;nbsp;it very well.&lt;br /&gt;
&lt;br /&gt;
Make sure that the managed accounts used such as SharePoint Search, SharePoint App Pool and the SharePoint Farm Account have "logon as a batch" job rights.&lt;br /&gt;
&lt;br /&gt;
Server(s) can be removed from domain but computer accounts should not be removed. If computer account(s) are removed, the identifier(s) will be deleted and therefore the identifiers change the next time when the servers are added again to the domain controller. SharePoint looks for the identifiers in config database and since it could not find the correct identifiers, CA would not work.&lt;br /&gt;
&lt;br /&gt;
If you have to apply new policy such as "logon as a service", make sure to&amp;nbsp;place the computer(s) in correct Organizational Unit(OU) and remove the computer(s) from domain. The policy is then reset and it assigns the correct "logon as a service" credentials.&lt;br /&gt;
&lt;br /&gt;
This wont be the case in most installations.&lt;br /&gt;
In our case, we ran into issues due to incorrect / corrupt AD structure / domain controller.&lt;br /&gt;
&lt;br /&gt;
I am not a network specialist but if there is a way to ensure that all the AD group policies are being applied properly prior to installing SharePoint, you would save yourself from the above mentioned hassles.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-2332038571219632383?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aGzcNxXkwW3Gw8hRw5Rvyg2_ltM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aGzcNxXkwW3Gw8hRw5Rvyg2_ltM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aGzcNxXkwW3Gw8hRw5Rvyg2_ltM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aGzcNxXkwW3Gw8hRw5Rvyg2_ltM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/JaENZ1LtaEU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/2332038571219632383/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/07/sharepoint-2010-search-error-search.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/2332038571219632383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/2332038571219632383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/JaENZ1LtaEU/sharepoint-2010-search-error-search.html" title="SharePoint 2010 - Search Error - The search service is not able to connect to the machine that hosts the administration component" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-MYcicm9ZqKI/ThpdcJVIkLI/AAAAAAAAFSc/mqjvML0oYyo/s72-c/1.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/07/sharepoint-2010-search-error-search.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HQ3s5fSp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-4071120850913006493</id><published>2011-06-08T09:24:00.000-07:00</published><updated>2011-11-12T11:58:52.525-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:58:52.525-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RTE" /><category scheme="http://www.blogger.com/atom/ns#" term="sp.ui.rte.js" /><title>SharePoint 2010 - Issues with Styles and Markup Styles drop downs in Rich Text Editor. Access is denied / 'undefined' is null or not an object - sp.ui.rte.js</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;br /&gt;
&lt;b&gt;Problem:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
In the Rich Text Editor (CEWP / Page Content Area), when a user clicks on Markup Styles or Styles, the popups do not show up. A JS error shows up. (Access is denied / 'undefined' is null or not an object - sp.ui.rte.js)&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;
Click inside a Rich Text Editor (CEWP or Page Content Field)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://1.bp.blogspot.com/-RV5zfbQfPhQ/Te-fUOqT2yI/AAAAAAAAFRA/c2Oi_7Dw56E/s1600/Page+Content.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-RV5zfbQfPhQ/Te-fUOqT2yI/AAAAAAAAFRA/c2Oi_7Dw56E/s1600/Page+Content.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Click on Styles / Markup Styles&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-x9Fg40YyPR0/Te-fcrDoSUI/AAAAAAAAFRI/dUfVkH7BISc/s1600/Error+-+Styles.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-x9Fg40YyPR0/Te-fcrDoSUI/AAAAAAAAFRI/dUfVkH7BISc/s1600/Error+-+Styles.jpg" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-IzFmGscF4oE/Te-fcPo-7gI/AAAAAAAAFRE/45TTrzp9uaw/s1600/Error+-+Markup+Styles.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-IzFmGscF4oE/Te-fcPo-7gI/AAAAAAAAFRE/45TTrzp9uaw/s1600/Error+-+Markup+Styles.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
You will notice that the status bar reports a JS error.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-dSLUMix7p0U/Te-fdPx6oQI/AAAAAAAAFRQ/esJJdftlELM/s1600/JS+Error+in+Status.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-dSLUMix7p0U/Te-fdPx6oQI/AAAAAAAAFRQ/esJJdftlELM/s1600/JS+Error+in+Status.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div dir="rtl" style="text-align: right;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
Clicking on the error in status bar brings the below dialog:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-xAJT1iLSwxg/Te-fc90sjVI/AAAAAAAAFRM/BHS6Xwkl0NY/s1600/JS+Error+Description.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-xAJT1iLSwxg/Te-fc90sjVI/AAAAAAAAFRM/BHS6Xwkl0NY/s1600/JS+Error+Description.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="MsoNormal"&gt;
I initially thought that the jQuery registration call or addThis script might be causing the issues and therefore tried removing jQuery references from Google and replaced them with local references, removed "Add This" widget, etc..&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;
Finally it turned out to be that there are some empty JavaScript files in the master page that are causing the js error.&lt;/div&gt;
&lt;div class="MsoNormal"&gt;
&lt;br /&gt;
&lt;b&gt;Resolution:&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Make sure that there are no empty css files that are included in the master page.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
Just add a comment like /* Styles */ in the css file&lt;br /&gt;
Check-In/Publish the css file and the error should disappear.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-4071120850913006493?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0PrRvGeqQITqBkzxjEykFHGRxV8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0PrRvGeqQITqBkzxjEykFHGRxV8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0PrRvGeqQITqBkzxjEykFHGRxV8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0PrRvGeqQITqBkzxjEykFHGRxV8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/Ox1bViEdHA0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/4071120850913006493/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/06/sharepoint-2010-issues-with-styles-and.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/4071120850913006493?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/4071120850913006493?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/Ox1bViEdHA0/sharepoint-2010-issues-with-styles-and.html" title="SharePoint 2010 - Issues with Styles and Markup Styles drop downs in Rich Text Editor. Access is denied / 'undefined' is null or not an object - sp.ui.rte.js" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-RV5zfbQfPhQ/Te-fUOqT2yI/AAAAAAAAFRA/c2Oi_7Dw56E/s72-c/Page+Content.JPG" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/06/sharepoint-2010-issues-with-styles-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HR385fCp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-8596394731649793098</id><published>2011-05-31T08:07:00.000-07:00</published><updated>2011-11-12T11:58:56.124-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:58:56.124-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Config Log" /><title>SharePoint - Server error: The URL is invalid, it may refer to a nonexistent file or folder or refer to a valid file that is not in the current Web</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
SharePoint Designer throws the error "Server error: The URL is invalid, it may refer to a nonexistent file or folder or refer to a valid file that is not in the current Web" when you attempt to open/check-in/check-out/upload a file.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
While there could be many reasons for this misleading error to show up, one of the reason is low disk space in the database server.&lt;br /&gt;
&lt;br /&gt;
I noticed that the transaction log file for the SharePoint_Config database, "SharePoint_Config_Log.LDF" (resides in \Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data in our case) has grown enormously to 28 GB which is approximately 70% of the space in that drive.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Take a backup of the log file it required.&lt;br /&gt;
Just run the below scripts to truncate the log file:&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;SQL Server 2008:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;USE [master]
GO
ALTER DATABASE[SharePoint_Config] SET RECOVERY SIMPLE WITH NO_WAIT
GO
USE [SharePoint_Config]
GO
DBCC SHRINKFILE ('SharePoint_Config_Log')
GO
ALTER DATABASE[SharePoint_Config] SET RECOVERY FULL WITH NO_WAIT
GO
USE [SharePoint_Config]
GO
&lt;/pre&gt;
&lt;br /&gt;
&lt;u&gt;SQL Server 2005:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;BACKUP LOG [Sharepoint_Config] WITH TRUNCATE_ONLY
USE [SharePoint_Config]
GO
DBCC SHRINKFILE (N’SharePoint_Config_log’ , 50)
GO
&lt;/pre&gt;
&lt;br /&gt;
The file "SharePoint_Config_Log.LDF" is now 504 KB.&lt;br /&gt;
The server is happy now and running fine.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-nlSN8tmSYSo/TeUDPC3TsbI/AAAAAAAAFQ8/_8MK38ixZDk/s1600/DB+Error.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-nlSN8tmSYSo/TeUDPC3TsbI/AAAAAAAAFQ8/_8MK38ixZDk/s1600/DB+Error.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span id="goog_820871984"&gt;&lt;/span&gt;&lt;span id="goog_820871985"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-8596394731649793098?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zgw07mgi-3zRzMgBDc6Oas0NDU0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zgw07mgi-3zRzMgBDc6Oas0NDU0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zgw07mgi-3zRzMgBDc6Oas0NDU0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zgw07mgi-3zRzMgBDc6Oas0NDU0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/juKsuIefK9c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/8596394731649793098/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/05/sharepoint-2010-server-error-url-is.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/8596394731649793098?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/8596394731649793098?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/juKsuIefK9c/sharepoint-2010-server-error-url-is.html" title="SharePoint - Server error: The URL is invalid, it may refer to a nonexistent file or folder or refer to a valid file that is not in the current Web" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-nlSN8tmSYSo/TeUDPC3TsbI/AAAAAAAAFQ8/_8MK38ixZDk/s72-c/DB+Error.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/05/sharepoint-2010-server-error-url-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HSXc5eip7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-8660370871811684908</id><published>2011-05-27T15:19:00.000-07:00</published><updated>2011-11-12T11:58:58.922-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:58:58.922-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SPSecurityTrimmedControl" /><category scheme="http://www.blogger.com/atom/ns#" term="LoginView" /><title>SharePoint 2010 - Buggy SPSecurityTrimmedControl and a workaround</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
The&amp;nbsp;SPSecurityTrimmedControl control in SharePoint is incomplete and buggy.&lt;br /&gt;
Information about the bugs in this control are not provided by MSDN either.&lt;br /&gt;
&lt;br /&gt;
In this post, I will try to explain the bug in the&amp;nbsp;SPSecurityTrimmedControl&amp;nbsp;and a solution to get over it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
The&amp;nbsp;SPSecurityTrimmedControl &amp;nbsp;allows us to&amp;nbsp;display/hide the content using a few different criteria, like  authentication (for anonymous/authenticated users only), page mode (page  in display or edit mode) or current user’s permissions.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;So what's wrong?&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;br /&gt;
&lt;/u&gt;&lt;br /&gt;
The control doesn’t work the way you would expect it.&lt;br /&gt;
It does a good job with displaying content based on permissions but &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;fails to conditionally display content based on authentication&lt;/span&gt;&lt;/b&gt;(anonymous/authenticated users).&lt;br /&gt;
&lt;br /&gt;
That means using this control, you can hide an element from users who do not have the appropriate permissions.&lt;br /&gt;
Srini Sistla has a good post explaining all the available permissions &lt;a href="http://codename-srini.blogspot.com/2009/04/spsecuritytrimmedcontrol-and.html"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This control also has the so called ability to show/hide content based on authentication(anonymous/authenticated users).&lt;br /&gt;
&lt;br /&gt;
You would need to use the property "AuthenticationRestrictions" which can take any of these values:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;AllUsers&lt;/li&gt;
&lt;li&gt;AuthenticatedUsersOnly&lt;/li&gt;
&lt;li&gt;AnonymousUsersOnly&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
For Ex:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;SharePoint:SPSecurityTrimmedControl runat="server" id="stc" AuthenticationRestrictions="AnonymousUsersOnly"&amp;gt; &amp;lt;p&amp;gt;User is not logged in&amp;lt;/p&amp;gt;&amp;lt;/SharePoint:SPSecurityTrimmedControl&amp;gt;
&lt;/pre&gt;
&lt;br /&gt;
In case if you try to use this control in the above manner, it wont give you the desired results.&lt;br /&gt;
&lt;br /&gt;
Examine the below screenshots and you understand it better.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Test 1&lt;/u&gt;: Tried with "AnonymousUsersOnly"&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Q7YWsNLMReg/TeAgo2fITRI/AAAAAAAAFQY/F9bFkFB-KBY/s1600/AnonUsersOnly-Code.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="38" src="http://1.bp.blogspot.com/-Q7YWsNLMReg/TeAgo2fITRI/AAAAAAAAFQY/F9bFkFB-KBY/s640/AnonUsersOnly-Code.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I tried to access the page as an anonymous user and below is the output. So test &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;failed&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-aoCdjHh1ofI/TeAgpVwy7MI/AAAAAAAAFQc/nDXB9O9DMVY/s1600/AnonUsersOnly-Output.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="55" src="http://3.bp.blogspot.com/-aoCdjHh1ofI/TeAgpVwy7MI/AAAAAAAAFQc/nDXB9O9DMVY/s200/AnonUsersOnly-Output.JPG" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;u&gt;Test 2:&amp;nbsp;&lt;/u&gt;Tried with "AuthenticatedUsersOnly"&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-NB0cKq7EEb4/TeAgpiyWSYI/AAAAAAAAFQg/u7dIi-8s_Ws/s1600/AuthUsersOnly-Code.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="38" src="http://1.bp.blogspot.com/-NB0cKq7EEb4/TeAgpiyWSYI/AAAAAAAAFQg/u7dIi-8s_Ws/s640/AuthUsersOnly-Code.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I tried to access the page as an authenticated user and below is the output. So test&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;passed&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-UDv69zFbayE/TeAgptHdAcI/AAAAAAAAFQk/Ge78_hB__lM/s1600/AuthUsersOnly-Output.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-UDv69zFbayE/TeAgptHdAcI/AAAAAAAAFQk/Ge78_hB__lM/s1600/AuthUsersOnly-Output.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
The solution is to use the LoginView control if you need to show/hide content based on authentication.&lt;br /&gt;
The LoginView control provides the following templats:&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;AnonymousTemplate - Controls to show to anonymous users only&lt;/li&gt;
&lt;li&gt;LoggedInTemplate -&amp;nbsp;Controls to show to authenticated users only&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;u&gt;Test 3&lt;/u&gt;: Tried both&amp;nbsp;AnonymousTemplate &amp;amp;&amp;nbsp;LoggedInTemplate&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-4iG-yrleB6o/TeAgp1gb96I/AAAAAAAAFQo/MqCPILkzJwc/s1600/LoginView-Code.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-4iG-yrleB6o/TeAgp1gb96I/AAAAAAAAFQo/MqCPILkzJwc/s1600/LoginView-Code.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I tried to access the page as an authenticated user&amp;nbsp;and below is the output. Test &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;passed&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-mssxT0tQ3Ls/TeAgqDJNPdI/AAAAAAAAFQs/89agCBOTjD8/s1600/LoginView-Output-LoggedIn.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-mssxT0tQ3Ls/TeAgqDJNPdI/AAAAAAAAFQs/89agCBOTjD8/s1600/LoginView-Output-LoggedIn.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
I tried to access the page as an anonymous user and below is the output. So test&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;passed&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-6Eln6m7gf04/TeAgqXgxQNI/AAAAAAAAFQw/5YuPdneUk6c/s1600/LoginView-Output-NotLoggedIn.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-6Eln6m7gf04/TeAgqXgxQNI/AAAAAAAAFQw/5YuPdneUk6c/s1600/LoginView-Output-NotLoggedIn.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-8660370871811684908?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rmtMjGTiY0aQzyRgGKYHFnVLBEI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rmtMjGTiY0aQzyRgGKYHFnVLBEI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rmtMjGTiY0aQzyRgGKYHFnVLBEI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rmtMjGTiY0aQzyRgGKYHFnVLBEI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/ZIPGtl9vv2A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/8660370871811684908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/05/sharepoint-2010-buggy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/8660370871811684908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/8660370871811684908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/ZIPGtl9vv2A/sharepoint-2010-buggy.html" title="SharePoint 2010 - Buggy SPSecurityTrimmedControl and a workaround" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Q7YWsNLMReg/TeAgo2fITRI/AAAAAAAAFQY/F9bFkFB-KBY/s72-c/AnonUsersOnly-Code.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/05/sharepoint-2010-buggy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4AQHg9eip7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-518271296755982464</id><published>2011-05-22T12:41:00.000-07:00</published><updated>2011-11-12T11:59:01.662-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:59:01.662-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Access Denied; Sharepoint 2010" /><title>SharePoint 2010 - Access denied for users that have full control on the site</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Users get "Access Denied" over the whole site, despite having Full Control permission&lt;/li&gt;
&lt;li&gt;Site Collection Administrators have no problem logging in&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
A SharePoint 2010 site that uses claims-based authentication has been extended to Intranet zone that uses AD as well as FBA. The site has number of users in the default owners and members groups.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
All the site users always get access denied over the whole site even though they clearly have access to the site through the site groups.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Site Collection Administrators are allowed to access the site and have no problems logging in.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Resolution:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
Make sure that all the Master page, CSS files, any other files that are required are published.&lt;/div&gt;
&lt;div&gt;
If there are files that are required in the master pages and are not published, users will get access denied even if they have full control on the site.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
If you are ok with giving all authenticated users atleast road-only access to all files inorder to prevent the access denied problem, then you can try the below.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: 'Trebuchet MS', Verdana, sans-serif; font-size: small;"&gt;
&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"&gt;Add a new "User Policy" for the web application that allows "All Authenticated Users" the permissions "Full Read" on the desired zone.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-skrlYx-aekA/TdlmjtvUfZI/AAAAAAAAFQA/WTuxGVUvfag/s1600/UserPolicy.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="17" src="http://2.bp.blogspot.com/-skrlYx-aekA/TdlmjtvUfZI/AAAAAAAAFQA/WTuxGVUvfag/s320/UserPolicy.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
To add a new User Policy:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Go to Central Administration&lt;br /&gt;
Click on Application Management&lt;br /&gt;
Click on Manage Web Applications&lt;br /&gt;
&lt;br /&gt;
Choose the desired web application:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-gdkmF9RTiZM/TeAXL8IvZNI/AAAAAAAAFQE/K81k8t3RDPk/s1600/Web+Apps.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-gdkmF9RTiZM/TeAXL8IvZNI/AAAAAAAAFQE/K81k8t3RDPk/s320/Web+Apps.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Click on "User Policy"&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-cXMiWw-M_g0/TeAXQ-kVwII/AAAAAAAAFQI/zaBR2UuRiPU/s1600/Web+Apps+User+Policies.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="100" src="http://3.bp.blogspot.com/-cXMiWw-M_g0/TeAXQ-kVwII/AAAAAAAAFQI/zaBR2UuRiPU/s320/Web+Apps+User+Policies.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Click on "Add Users" to add a new User Policy:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-7apgZGqvSdY/TeAXWs0Et8I/AAAAAAAAFQM/FZKQclw-ooM/s1600/Choose+Zone.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="164" src="http://4.bp.blogspot.com/-7apgZGqvSdY/TeAXWs0Et8I/AAAAAAAAFQM/FZKQclw-ooM/s320/Choose+Zone.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Select the zone that you want to apply the new policy to. If you are not sure what to choose, leave the defaut value selected (All Zones) and cick next&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-LxZM2OF-x4c/TeAXdAx1sII/AAAAAAAAFQQ/asbSJ7-9K70/s1600/Add+User.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-LxZM2OF-x4c/TeAXdAx1sII/AAAAAAAAFQQ/asbSJ7-9K70/s320/Add+User.JPG" width="294" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Choose the permissions that you would like to give to the user(s) in this new user policy. If you do not want to give the user(s) full permission, choose "Full Read". This permission ensures that all the users in this policy can atleast access the site. Then click on "Browse" icon in the "Choose Users" area.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-MNGmpp7L85U/TeAXisZBpfI/AAAAAAAAFQU/7i977oLT-u8/s1600/Add+Authenticated+Users.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-MNGmpp7L85U/TeAXisZBpfI/AAAAAAAAFQU/7i977oLT-u8/s320/Add+Authenticated+Users.JPG" width="297" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
If you would ike to give All Authenticated Users / AD users / FBA users "Full Read" access, then choose the appropriate group(s).&lt;br /&gt;
In the next screens, click OK to get out of the wizard.&lt;br /&gt;
Your new user policy should be ready now.&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-518271296755982464?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xy_bJ4TcY1BEHllo9qoIeq3aS6E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xy_bJ4TcY1BEHllo9qoIeq3aS6E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xy_bJ4TcY1BEHllo9qoIeq3aS6E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xy_bJ4TcY1BEHllo9qoIeq3aS6E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/Arsb7EffQ5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/518271296755982464/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/05/access-denied-for-users-that-have-full.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/518271296755982464?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/518271296755982464?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/Arsb7EffQ5g/access-denied-for-users-that-have-full.html" title="SharePoint 2010 - Access denied for users that have full control on the site" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-skrlYx-aekA/TdlmjtvUfZI/AAAAAAAAFQA/WTuxGVUvfag/s72-c/UserPolicy.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/05/access-denied-for-users-that-have-full.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ARXYyfSp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-1736093195362998370</id><published>2011-05-17T20:52:00.000-07:00</published><updated>2011-11-12T11:59:04.895-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:59:04.895-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Secure Token Service" /><category scheme="http://www.blogger.com/atom/ns#" term="FBA" /><title>Sharepoint 2010 - An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You receive the below exception when you try to logon to a site that has been configured to use Claims Based Authentication with a custom membership provider using FBA credentials:&lt;br /&gt;
&lt;br /&gt;
Event ID from&amp;nbsp;Event Log&amp;nbsp;&amp;nbsp;- 8306&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error. &amp;nbsp;For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the &amp;lt;serviceDebug&amp;gt; configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs..&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This error started to appear in our QA environment which does not have Visual Studio installed. I have tried starting the service "Claims to Windows Token Service" but that did not help either.&lt;br /&gt;
&lt;br /&gt;
I have made sure that all configuration changes required for FBA have been made properly in the below web.config files:&lt;br /&gt;
&lt;ul style="text-align: left;"&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;CA Web Aplication&lt;/li&gt;
&lt;li&gt;\14\WebServices\SecurityToken&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;a href="http://kidoos.net/content/SharePointCustomMemershipProvider.aspx"&gt;This post&lt;/a&gt; can get you started with building a custom membership provider and making changes to the required configuration files.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-OpMO1g1KirI/TdNDXrXwM5I/AAAAAAAAFP4/83nKEfIJ_QU/s1600/Error.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-OpMO1g1KirI/TdNDXrXwM5I/AAAAAAAAFP4/83nKEfIJ_QU/s1600/Error.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Resolution:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/div&gt;
To view more information about the actual error that is preventing the secure token service from being able to issue security token, I added the service debug in the web.config for the web service, under \14\WebServices\SecurityToken:&lt;br /&gt;
&lt;pre class="csharp" name="code"&gt;&amp;lt;serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True"/&amp;gt;
&lt;/pre&gt;
After adding the above to SecurityToken's web.config, the event log reported the below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-ApG-zYq924U/TdNDgPb7CrI/AAAAAAAAFP8/cKyqjvBtkWU/s1600/serviceDebug.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-ApG-zYq924U/TdNDgPb7CrI/AAAAAAAAFP8/cKyqjvBtkWU/s1600/serviceDebug.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;An exception occurred when trying to issue security token: The configuration section for Logging cannot be found in the configuration source..&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
I then realized that it is Microsoft.Practices.EnterpriseLibrary.Logging from my custom membership code that is causing the issues and not FBA configuration as I originally thought.&lt;br /&gt;
&lt;br /&gt;
I then went ahead and added the required configuration for Microsoft.Practices.EnterpriseLibrary.Logging&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Everything after that worked as desired.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So I strongly advice everyone not to panic and take such drastic steps as re-installing SharePoint 2010 etc..&lt;/div&gt;
&lt;div&gt;
When I googled for this error, many people suggested to reinstall SharePoint 2010, change server names, etc..&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Remember that these things happen for a reason. It just requires some patience to figure out the exact problem.&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-1736093195362998370?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/13zwiaKSXQk3sIu0XSMSW8xhNU0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/13zwiaKSXQk3sIu0XSMSW8xhNU0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/13zwiaKSXQk3sIu0XSMSW8xhNU0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/13zwiaKSXQk3sIu0XSMSW8xhNU0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/8YRebqk8ca8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/1736093195362998370/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/05/sharepoint-2010-exception-occurred-when.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1736093195362998370?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/1736093195362998370?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/8YRebqk8ca8/sharepoint-2010-exception-occurred-when.html" title="Sharepoint 2010 - An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-OpMO1g1KirI/TdNDXrXwM5I/AAAAAAAAFP4/83nKEfIJ_QU/s72-c/Error.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/05/sharepoint-2010-exception-occurred-when.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4MQH4zeCp7ImA9WhRSEU8.&quot;"><id>tag:blogger.com,1999:blog-7531459993417803686.post-7746871479277850717</id><published>2011-03-27T15:13:00.000-07:00</published><updated>2011-11-12T11:59:41.080-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:59:41.080-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Internet Access" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server 2008" /><category scheme="http://www.blogger.com/atom/ns#" term="Networking" /><title>How to fix troubles with internet access in a Windows Server 2008 Std VM that is configured as a domain controller</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;b&gt;Scenario:&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;No internet in domain controller Windows Server 2008 VM?&amp;nbsp;How to fix troubles with internet access in a VM that is configured as a domain controller?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Explanation:&lt;/b&gt;&lt;br /&gt;
Installed SharePoint Foundation in a Windows Server 2008 Std VM.&lt;br /&gt;
Before configuring the server as a domain controller, the VM had access to internet.&lt;br /&gt;
Soon after configuring the VM as a domain controller, the server could not access internet from the host machine.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;
After hours of troubleshooting, the below worked :&lt;br /&gt;
&lt;br /&gt;
Go to&amp;nbsp;Control Panel\Network and Internet\Network and Sharing Center&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-3-_YqJ03C7U/TY-5pNLV1kI/AAAAAAAAFOo/rZZu0W_VxOs/s1600/Network+1.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://2.bp.blogspot.com/-3-_YqJ03C7U/TY-5pNLV1kI/AAAAAAAAFOo/rZZu0W_VxOs/s320/Network+1.GIF" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Click Local Network Connection:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-WtNJqNXHPvQ/TY-5pdj-vdI/AAAAAAAAFOs/jwy9BtDSXIg/s1600/Network+2.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-WtNJqNXHPvQ/TY-5pdj-vdI/AAAAAAAAFOs/jwy9BtDSXIg/s320/Network+2.GIF" width="262" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Click Properties:&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-XUKMsiTLxLI/TY-5pxZmwOI/AAAAAAAAFOw/Al_mUf8d4OU/s1600/Network+3.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-XUKMsiTLxLI/TY-5pxZmwOI/AAAAAAAAFOw/Al_mUf8d4OU/s320/Network+3.GIF" width="258" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Highlight Internet Protocal Version 4 (TCP/IPv4) and click Properties:&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-P2QEnmL2_lo/TY-5p6vYe3I/AAAAAAAAFO0/eXRsh8XPCUw/s1600/Network+4.GIF" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-P2QEnmL2_lo/TY-5p6vYe3I/AAAAAAAAFO0/eXRsh8XPCUw/s320/Network+4.GIF" width="269" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure to choose "Obtain IP Address automatically" and "Obtain DNS server address automatically"&lt;br /&gt;
&lt;br /&gt;
Repeat the same step for IPv6 as well..&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Disclaimer:&lt;/u&gt;&amp;nbsp;I am not a network admin. This just happened to work for me. I am sharing this so that it could just save some time for some one with the same problem.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7531459993417803686-7746871479277850717?l=www.chaitumadala.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DiEk2lpIW0TjBsaLfF5HdpErzJ4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DiEk2lpIW0TjBsaLfF5HdpErzJ4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DiEk2lpIW0TjBsaLfF5HdpErzJ4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DiEk2lpIW0TjBsaLfF5HdpErzJ4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AssortedThoughts/~4/NXfXamDZMkg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.chaitumadala.com/feeds/7746871479277850717/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.chaitumadala.com/2011/03/how-to-fix-troubles-with-internet.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7746871479277850717?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7531459993417803686/posts/default/7746871479277850717?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AssortedThoughts/~3/NXfXamDZMkg/how-to-fix-troubles-with-internet.html" title="How to fix troubles with internet access in a Windows Server 2008 Std VM that is configured as a domain controller" /><author><name>Chaitu Madala</name><uri>http://www.blogger.com/profile/10868654749994006142</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-EAtNY_DKLBs/Tud3Vt-iCNI/AAAAAAAAFfI/4TvhxnhNLJE/s220/Chaitu%2BMadala.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-3-_YqJ03C7U/TY-5pNLV1kI/AAAAAAAAFOo/rZZu0W_VxOs/s72-c/Network+1.GIF" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.chaitumadala.com/2011/03/how-to-fix-troubles-with-internet.html</feedburner:origLink></entry></feed>

