Q:

SharePoint Online Addin Development-Could not fetch a certain key value from the Web Property Bag(AllProperties.FieldValues)

I have a requirement where in I need to develop a web page  using SharePoint Addin in Visual Studio such that user enters certain configuration data . This data that has to be stored on the SharePoint Online Web Property Bag i.e AllProperties.FieldValues. The code block below shows what I have implemented on a button click event of the page.
 var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
var clientContext = spContext.CreateUserClientContextForSPHost();
var ConfigDataString=TextBox1.Text;
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();                
web.AllProperties.FieldValues.Add("Config", ConfigDataString);                
web.Update();
clientContext.ExecuteQuery();

But when I tried to fetch the same key value again by implementing the following code on another button click, I could not find the key on the property field values.
var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
var clientContext = spContext.CreateUserClientContextForSPHost();
Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();                
var configData = web.AllProperties.FieldValues["Config"].ToString();//Exception here

Then, I tried to update other properties of the Web such as Web Title or Description and I could successfully post the changes to the SharePoint Online.I have same code block for SharePoint On premise server and I could successfully store data on the RootWeb or Site Properties. Did I miss anything when it comes to SharePoint Online? I have a speculation that the problem is with the client context. Please let me know  where I can see the properties of the Web or SiteCollection in the SharePoint Online interface.

A:

To add values to property bag, try the below code:
Web web = context.Site.RootWeb; //change as per your web object

context.Load(web, w=>web.AllProperties);
context.ExecuteQuery();  

var allProperties = web.AllProperties;
allProperties["Config"] = "some value";

web.Update();
context.ExecuteQuery();

To retrieve the value, you need to use below code:
Web web = context.Site.RootWeb; //change as per your web object
context.Load(web, w => w.AllProperties);
context.ExecuteQuery();

var propValue = web.AllProperties["Config"];

