CHunky Universe of Vigourous Astonishing SHarepoint :)

Settings in Sharepoint_config database instead of appSettings

An alternative to store key-value paired properties in appSettings in web.config we can use Sharepoint_config database by creating our own SPPersistedObject.  First we have to create a class which inherits from SPPersistedObject and decorate its properties with [Persisted]:

namespace Takana.SharePoint
    public class Settings: SPPersistedObject
        public string DbConString;
        public LinkCheckerPersistedSettings() { }
        public LinkCheckerPersistedSettings(string name, SPPersistedObject parent) : base(name, parent) { }

Then we must create such an object. Let’s do it in Powershell:

if(-not(Get-PSSnapin | 
	Where { $_.Name -eq "Microsoft.SharePoint.PowerShell"})) { 
	Add-PSSnapin Microsoft.SharePoint.PowerShell }

$app = get-spwebapplication http://takana
$configName = "takana.sharepoint.settings"
$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
$settings = $farm.GetObject($configName, $app.Id, [takana.sharepoint.settings])
if ($settings -ne $null) { $settings.Delete() }             
#Create a new persisted settings object
$settings = New-Object Takana.Sharepoint.settings ($configName, $app)
$settings.DbConString = "Some Connection String"

To get a member by name we must use reflection:

public static string FindSettings(string key, SPWebApplication app)
  var s = string.Empty;
    var farm = Microsoft.SharePoint.Administration.SPFarm.Local;
    var settings = farm.GetObject("Takana.Sharepoint.Settings", app.Id, typeof(Settings)) as Settings;
      if (settings != null)
        var type = typeof(Takana.SharePoint.Settings);
        var f = type.GetField(key);
        s = f.GetValue(settings) as string;
  catch (ArgumentException ex)
    throw new ArgumentException("Settings could not be found."), ex);
  return s;

To prevent errors, we must catch ArgumentException. Pay attention to the constructor of ArgumentException, we provide the original Exception as an InnerException argument and enable a better tracking.

2 responses to “Settings in Sharepoint_config database instead of appSettings

  1. Jens Malmberg 2012-01-23 at 10:59

    Thank you for a good blogg! 😉

    Very useful. I can also recommend using the property bag, which is a key-value set which you can set on farm, application, site or web level.

    usable via code:
    //Retrieve a property entry

    // Add a property entry
    web.AllProperties[key] = value;
    // Remove a property entry

    via powershell:
    $site = spsite “http://server”
    $web = $site.OpenWeb()

    I for one use it in a current project where we set up a custom configuration site in central admin where we store and fetch settings from.
    Using: SPAdministrationWebApplication.Local.Properties[“importPersonalRoot”].ToString(); to fetch settings at run time.


  2. Anatoly Mironov 2012-01-23 at 11:29

    Thank you Jens for your input!

    The property bag of SPWeb or SPWebApplication are handy, indeed. I have used them a lot. Using SPPersistedObject is tricky and when possible should be avoided. I tested this method, and this blog post is just a brain dump 🙂 Maybe it can be useful in the future.

    By the way, in powershell, you can a reference to your web directly:
    $web = get-spweb “http://server”

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: