I am working to implement a Web API solution for development. I have a few C# console apps that run on a server and have their own data access operations, as well as a MVC app running on a similar server. I want to centralize the DAL to a WEB API that can be hosted somewhere. My question is, what is the best way to manage connection strings and QA/PROD/DEV environments? Do i have to publish a DEV/QA/PROD version of the web api for each instance? If i am using Visual Studio to publish my Project, is there an easy way to adjust the configuration file so that it points to the correct Web API instance?
Here is the solution i came up with if anyone ran into the same issue:
I ended up publishing three versions of the API for DEV/QA/PROD to various servers. I have a section in my App.Config/Web.Config for the ApiLocation that i read at runtime for any application that needs the API. I then added configurations for QA and PROD, and changed the Config transform files for each of them to update the API Location per the documentation: https://msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx
Heres what they look like
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <appSettings> <add key="APILocation" value="server/API_QA/" xdt:Transform="Replace" xdt:Locator="Match(key)" /> </appSettings> </configuration>