Solved

How to add connectionstring and appsettings to a web.config uisng Web Setup.

Posted on 2008-09-29
2
1,698 Views
Last Modified: 2013-11-07
Hi All,

I am building the web setup fo my site for production. Now my requirement is to add a connection string and couple of appsettings to the web config during the setup of the web app. The set up should give me an option of setting the connection string and appsettings.

I am trying the following code, found at some post but without any success.

where targetVDir, targetSite  are coming from the custom action in the setup which has the following setup. connection string is coming from the textbox whihc is custom dialog box actin in the setup.

/connectionstring="[EDITA1]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"

Please advice ASAP.

Raj

namespace CustomWebConfigInstaller

{

    [RunInstaller(true)]

    public class CustomWebConfig:Installer

    {

        const string DATABASE_CONNECTION_KEY = "eAdjudication";

        public override void Install(System.Collections.IDictionary stateSaver)

        {

            //base.Install(stateSaver);
 

            string targetSite = "W3SVC";//Context.Parameters["targetsite"]; //

            if (targetSite == null)

            {

                throw new Exception("Site name is null");

            }

            string targetVDir = Context.Parameters["targetvdir"]; //"MyApp";//

            if (targetVDir == null)

            {

                throw new Exception("Virtual Dir is null");

            }

            

            string connectionString = Context.Parameters["connectionstring"];//"Data Source=localhost;Initial Catalog=eAdjudication_Cap;Persist Security Info=True;User ID=devsa;Password=welcome2adc!";

            if (connectionString == null)

            {

                throw new Exception("Conection String is null");

            }
 

            this.ConfigureDatabase(targetSite, targetVDir, connectionString);

        }
 

        void ConfigureDatabase(string targetSite, string targetVDir, string connectionString)

        {

            // Retrieve "Friendly Site Name" from IIS for TargetSite

            DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/" + targetSite);

            string friendlySiteName = entry.Properties["ServerComment"].Value.ToString();
 

            // Open Application's Web.Config

            Configuration config = WebConfigurationManager.OpenWebConfiguration("/" + targetVDir, friendlySiteName);
 

            // Add new connection string setting for web.config

            ConnectionStringSettings appDatabase = new ConnectionStringSettings();

            appDatabase.Name = DATABASE_CONNECTION_KEY;

            appDatabase.ConnectionString = connectionString;
 

            config.ConnectionStrings.ConnectionStrings.Clear();

            config.ConnectionStrings.ConnectionStrings.Add(appDatabase);
 

            // Persist web.config settings

            config.Save();

        } 
 

    }

}

Open in new window

0
Comment
Question by:rajan_thakur78
2 Comments
 
LVL 16

Assisted Solution

by:Gyanendra Singh
Gyanendra Singh earned 100 total points
ID: 22602943
0
 

Accepted Solution

by:
rajan_thakur78 earned 0 total points
ID: 22602955
Thanks..

The above code which i posted worked for me.

Rajan
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now