CHunky Universe of Vigourous Astonishing SHarepoint :)

Working with web.Properties

Sometimes one may need more properties to track on a SPWeb beside Title and Description. One of the possibilities is to create a custom list (maybe a hidden one) with keys and values (Title and Value). It works fine. The good thing with it is also the possibility to change the key-value pair directly in the web interface.

Another approach is to use web.Properties which is a Dictionary with key-values pairs. A simpler and neater solution:

Here is a good motivation from the best sharepoint book Sharepoint as a Development Platform (p. 1043):

Each site includes a property bag, which is widely used internally by SharePoint. However, there is no reason why you cannot also use this property bag to store common settings related to a site. You can regard the bag as an application settings collection, equivalent to what you would normally define in a web.config or app.config file. As in the configuration files, the settings are a collection of key/value pairs.

To be able to distinguish your values from standard Sharepoint use a prefix. Here are two methods: one for writing a property, and one for listing all properties:

const string PREFIX = "contoso_";

private void  AddEntry(string key, string value) 
	using (SPSite site = new SPSite("http://contoso/"))
		using (SPWeb web = site.RootWeb)
			key = PREFIX + key;
			if (!web.Properties.ContainsKey(key))
				web.Properties.Add(key, value);
				web.AllowUnsafeUpdates = true;
private void ListEntries()
	using (SPSite site = new SPSite("http://contoso/"))
		using (SPWeb web = site.RootWeb)
			foreach (DictionaryEntry entry in web.Properties)
				Console.WriteLine("{0} = {1}", entry.Key, entry.Value);

And of course, all this you can do in Powershell (even a response to shorcoming to not be able to change in UI):



To remove just run handle as every Dictionary:




The same we can do with web application, just here you don’t need to set AllowUnsafeUpdates to true, neither it won’t be neccessary to run webapp.Properties.Update, just update webapp:

$webapp = get-spwebapplication "http://contoso"
$webapp.Properties.Add("hello", "world")

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Daniel Chronlund Cloud Tech Blog

News, tips and thoughts for Microsoft cloud fans

Вула Чăвашла

VulaCV - Чăвашла вулаттаракан сайт

Discovering SharePoint

And going crazy doing it

Bram de Jager - Architect, Speaker, Author

Microsoft 365, SharePoint and Azure

SharePoint Dragons

Nikander & Margriet on SharePoint

Mai Omar Desouki

PFE @ Microsoft

Cameron Dwyer

Office 365, SharePoint, Azure, OnePlace Solutions & Life's Other Little Wonders


Me and My doings!

Share SharePoint Points !

By Mohit Vashishtha

Jimmy Janlén "Den Scrummande Konsulten"

Erfarenheter, synpunkter och raljerande om Scrum från Jimmy Janlén

Aryan Nava

DevOps, Cloud and Blockchain Consultant


SharePoint for everyone


Ryan Dennis is a SharePoint Solution Architect with a passion for SharePoint and PowerShell

SharePoint 2020

The Vision for a Future of Clarity

Aharoni in Unicode

Treacle tarts for great justice

... And All That JS

JavaScript, Web Apps and SharePoint


Mostly what I know and share about...

%d bloggers like this: