When you publish a new provider hosted app using F5 - deployment, the new version of the app will be installed and a new ClientId will be generated. In addition that ClientId will automatically be saved in the Web.Config of the according Web-project.

Now I have a solution that has not only an app-project and a web-project, but also a few console applications that use the same mechanisms and configurarions and so also have a ClientId stored in their app.config.

Currently I have to manually copy the updated ClientId from the Web.Config to each App.Config of the console applications.

To avoid this I would like to use a fix ClientId (instead of a new one every time I redeploy the app). As an alternative, if the Clientid also is stored in the App.Configs automatically I would be happy, too.

I did not find where the ClientId-Web.Config-replacement takes place. If I could find that and could change it to also modify the other app.Configs that would be an alternative. But there seems to be nothing in the csproj-files.


  1. I want to use a static ClientId on F5-Deployment on a Provider hosted app instead of a dynamic one
  2. (Alternative) How can I automatically store the ClientId not only in the web.Config but also in different App.Configs if (1.) is not possible

2 Answers 2


I want to share my experience here and seems you mixed different approaches.

F5 used to develop a add-in so it's easy for us to dev/debug a add-in in developer site, VS will do many works for us(uninstall/install etc.).

If a add-in ready to development to 'prod', we should package a add-in and deploy to app catalog.

If you want to use fixed add-in ClientID, you could create it in /_layouts/15/AppRegNew.aspx, when you package your add-in, you could use the ClientID for your add-in. enter image description here

If you create a add-in in a developer site with fixed ClientID, when you deploy the add-in to a different site app catalog and use it in a site, the add-in will use the fixed ClientID also.

  • I am aware that on Prod I already have a fixed ClientId. So there is no issue as the ClientId is already inside all console applications. But on testing/debugging via F5 I also do not want to have to change every Config my solutiion has,
    – Ole Albers
    Nov 8, 2017 at 12:25

Answering my own question I was able to copy the clientId and Secret which are automatically dynamically created and stored in the Web.Config to my console applications / Timerjobs:

private static void ReadClientId()
   string startupPath="C:\\dev\\sharePointApp"; // There is the Web
   string config="Web.Config";
   string application="MyAppWeb";
   var map = new ExeConfigurationFileMap 
      ExeConfigFilename = System.IO.Path.Combine(startupPath, application, config) 
   var configFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
   var clientId = configFile.AppSettings.Settings["ClientId"].Value;
   var clientSecret = configFile.AppSettings.Settings["ClientSecret"].Value;
   ConfigurationManager.AppSettings["ClientId"] = clientId;
   ConfigurationManager.AppSettings["ClientSecret"] = clientSecret;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.