SharePoint 2010: bug with WebConfigModification

When you want to make changes to the web.config file of your SharePoint 2010 application, you can use two methods:

  • Create a webconfig.<your_name>.xml file that you add to the \CONFIG directory (Source on MSDN)
  • Do it programmatically and use the SPWebConfigModification and SPWebApplication.WebConfigApplication objects (Source on MSDN).

However, when you use the second method and remove the changes from the file using Remove(), the changes are not removed. Even if you use .Update() and .ApplyWebConfigModifications(). This may only result in your modification appearing multiple times in the web.config file, but if you insert more sensitive modifications to uniqueness, such as for an HttpModule, it creates an error that prevents the site from functioning (Error 500).

[Read More]

SharePoint 2010 and VS2010: Post-Deployment Scripts

Context

You are developing a SharePoint 2010 application using Visual Studio 2010 on a Windows 2008 64-bit server. You want to run a post-deployment script (PowerShell for example) for debugging:

image

The Problem

When you add a script, for example: powershell $(ProjectDir)\PowerShellScript\MySuperPowerShellScript.ps1

You always get an error when running the script:

Error occurred in deployment step ‘Run Post-Deployment Command’: The command "powershell $(ProjectDir)\PowerShellScript\MySuperPowerShellScript.ps1" exited with error code: 1.

This error is due to the fact that VS2010 runs in 32-bit mode, as well as its post-deployment scripts, and the SharePoint 2010 APIs run in 64-bit mode. This creates errors when executing the script.

[Read More]

SP2010 and SL: ClientContext.Current is null

When using Silverlight to develop web parts for SharePoint 2010, you might use the Silverlight Client Object Model to access SharePoint data. But what happens if you try to move out of the Silverlight web part and, for example, put Silverlight in a SharePoint dialog box? Answer: Unhandled Error in Silverlight Application Object reference not set to an instance of an object at ClientContext.Current.

The problem arises because the Silverlight web part injects the SharePoint context into the HTML object parameter for the proper functioning of the Client Object Model. Therefore, you need to inject the SharePoint site URLs where the Silverlight is currently displayed into the initParams (MS.SP.url):

[Read More]