Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to have different web.config settings for my local machine?

I'm finding myself having to manually update my DefaultConnection connection string in my web.config when I run locally. How can I automatically detect when I'm running locally and - when I am - overwrite the default connection string?

I have debug/release transformations working, but these are for deployment. I'm looking for a way to add another option - "local" - if there's any way to do it (or something like it).

like image 675
RobVious Avatar asked Oct 10 '13 00:10

RobVious


2 Answers

You need to add a solution configuration in order to add web.config transformations.

  • Right click on your solution (in solution explorer)
  • Select "Configuration manager" and in the "Active solution configuration" dropdown, click on new.
  • Enter a configuration name (like "local" for instance)
  • Copy settings from debug (seems more appropriate for development)
  • Check "Create new projects configuration".

Set your projects configuration aswell, and when you're done, right click on the web.config, select "add transforms" and you're good to go !

Then, when you want to use your local connection string, just use this configuration instead of debug.

like image 141
Superzadeh Avatar answered Sep 18 '22 19:09

Superzadeh


It depends on how you debug. If you are using Cassini, afaik your web.config contents will be read regardless of the selected solution configuration (e.g. Debug or Release).

If you are debugging with your local IIS, it depends on what you have set the path in the IIS to. If you have set it to your source code directory, you need to write your local settings into your web.config. If you publish your code into a local directory and set the IIS path accordingly, you can use web.config transforms. (You said, that your web.config transforms are working)

For other future readers:
I'd recommend the following: Have your debug settings in your web.config. Create a solution configuration with "Release" settings (Web.Release.Config), which you use for your publish process.

Check out http://www.tomot.de/en-us/article/5/asp.net/how-to-use-web.config-transforms-to-replace-appsettings-and-connectionstrings for a step by step tutorial for web.config transforms with VS 2010. Although the publish dialog changed in VS 2012, you should be able to adapt the guide to the newer version.

like image 37
citronas Avatar answered Sep 19 '22 19:09

citronas