I can see that Web.config file contains two files:
-web.Debug.config
-web.Release.config
Inside this config files there is the following comment:
In the example below, the "SetAttributes" transform will change the
value of "connectionString" to use "ReleaseSQLServer" only when the
"Match" locator finds an atrribute "name" that has a value of "MyDB".
<connectionStrings>
<add name="MyDB"
connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
What is the "Match" locator ?
I already have a connection String in Web.config So how do I set this up?
should the main web.config file contain the production connection string or the other way around?
I'm looking for adivices from people that have done similar things
We are using xdt:Transform="Replace" which basically replaces the connection string of our development DB and it works perfectly. See below:
Development connection string (in your case web.Debug.config):
<connectionStrings>
<add name="MyDB" connectionString="Data Source=DebugSQLServer;Initial Catalog=MyDebugDB;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Production connection string (in your case web.Release.config):
<connectionStrings xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="Replace" xdt:Locator="Match(name)" />
</connectionStrings>
Match(name) means that the name of the connectionString in your case MyDB if it is same as in web.config that it will set the connectionString attributes to what you have in your web.debug.config file's connectionString when you publish the website. A complete documentation can be found at MSDN. And a basic how to do can be found here.
Related
I am trying to use the Web.Release.config file to store an alternative MySQL connection string ready for the live environment, but I just can't seem to get it to work.
In my Web.config I have my local db set up like so:
<connectionStrings>
<add name="MySQLConnection" connectionString="Server=localhost;Database=local;Uid=userid;Pwd=12345678;" providerName="System.Data.MySqlClient" />
</connectionStrings>
Then my Web.Release.config looks like this:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MySQLConnection" connectionString="Server=localhost;Database=live;Uid=userid;Pwd=12345678;" providerName="System.Data.MySqlClient"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
</configuration>
And I am grabbing my connection string in code using:
ConfigurationManager.ConnectionStrings["MySQLConnection"].ConnectionString;
I have tried switching the config version and running and I get the exact same data being pulled out, all from the local db. If anyone could point me in the right direction I'd really appreciate it!
I've defined my connection string as ::
<add name="ammyGroupConnectionString" connectionString="Data Source=ammyGroup_Server;Initial Catalog=ammyGroup_Staging;Persist Security Info=True;User ID=sa;Password=ammyGroup;" providerName="System.Data.SqlClient"/>
<add name="ammyGroupConnectionString" connectionString="Data Source=ammyGroup_Server;Initial Catalog=ammyGroup_Staging;Persist Security Info=True;User ID=sa;Password=ammyGroup;" providerName="System.Data.SqlClient"/>
Now in the file there are tags,
<location allowOverride="true" inheritInChildApplications="true">
<appSettings>
<add key="DBSchema" value=/>
<add key="DBUserId" value=/>
<add key="DBPassword" value=/>
<add key="DBServerName" value=/>
<add key="DBName" value=/>
What does these keys are? What should be the value of these keys? Please explain.
I know that the keys
add key="DBUserId" and add key="DBPassword"
are for MS SQL SERVER user name and password but what when there is windows authentication only? Please explain.
I know for windows authentication we have to do ::
Trusted_Connection=Yes;Integrated Security=SSPI;
but what about appsetting values
<configuration>
<connectionStrings>
<add name="MyCon" connectionString="Data Source=sys1-PC; Server=127.0.0.1; port=3306; Database=entmx001; Uid=root;Pwd=root_mysql; Convert Zero Datetime=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
this is my connection string in webconfig file.Now i want to connect my code to the database which is on other computer.what changes do i need to make here.or what else do i need to do..plzzhelp
<connectionStrings>
<add providerName="System.Data.SqlClient" name="MyCon" connectionString="Data Source=name_of_your_server;Initial Catalog=name_of_your_db; User Id=user_id;Password=password;" />
</connectionStrings>
I am new in the web development world and I would like to create a variable in the web.config file so that I can use it in the .NET portion of the web.api
I found the following tutorials on how to do that :
Setting up connection string in ASP.NET to SQL SERVER
And
http://www.connectionstrings.com/Articles/Show/store-connection-string-in-web-config
I have the following question , I don t have a database to connect the string to(I will only use it in the web config so that I can easily change the string without having to go through code . so assuming that I am using it in the following way :
<add name="ConnStringDb1" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
What should I have in the connectionString and the providerName ?
If I understand what you want to do, it sounds like you don't want to use a connection string at all. Instead, use the Application Settings sections of your web.config file. For example
<configuration>
<system.web> ... </system.web>
<appSettings>
<add key="MyAppSetting" value="A test value." />
</appSettings>
</configuration>
This can then be used in your code by getting the value of
System.Configuration.ConfigurationManager.AppSettings["MyAppSetting"]
(C#) or
System.Configuration.ConfigurationManager.AppSettings("MyAppSetting")
(VB)
See MSDN for more information, or just search online for "asp.net AppSettings".
If you don't have a database to connect to (which is what I understood from your question), then you don't even need to have the <connectionStrings> section in your Web.config. That section is only needed if you are going to connect to a database.
If you do use a database, then the connectionString varies depending on several factors such as type of authentication, database product (MS SQL Server, MySQL), type of driver (ODBC, .NET), etc.
The "Provider Name" will depend on the database product that you are using. For example for SQL Server is "System.Data.SqlClient"
You can look at this site for a comprehensive list of database products and connection strings appropriate for each product for different authentication types, drivers used, etc.
For ASP.NET 4.5 Application I'm using appSettings for email configuration. I'm also using connectionStrings
appSettings needs to be included before connectionStrings not before configSections
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<appSettings>
<add key="ContactEmail0" value="service#davincispainting.com" />
<add key="ContactEmail1" value="estimate#davincispainting.com" />
</appSettings>
<connectionStrings>
<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-DAV3-20150302043828.mdf;Initial Catalog=aspnet-DAV3-20150302043828;Integrated Security=True" providerName="System.Data.SqlClient" />-->
<!--<add name="connectionString" connectionString="data source=localhost;Initial Catalog=*****;User ID=sa;Password=*****;" providerName="System.Data.SqlClient" />-->
<!--<add name="connectionString" connectionString="data source=localhost;Initial Catalog=Davincis3;User ID=*****;Password=*****;" providerName="System.Data.SqlClient" />-->
<!--<add name="connectionString" connectionString="data source=DELLLAPTOP-PC\SQLSERVEREXPRESS;Initial Catalog=Davincis3;User ID=sa;Password=*****;" providerName="System.Data.SqlClient" />-->
<add name="connectionString" connectionString="data source=DELLLAPTOP-PC\SQLEXPRESS;Initial Catalog=Davincis3;User ID=sa;Password=*****;" providerName="System.Data.SqlClient" />
</connectionStrings>
...
The file neodb.mdf is in my App_Data folder and I can browse the database in the server explorer in visual studio, using built in SQLEXPRESS:
Currently trying to no avail:
<connectionStrings>
<add name="EFDbContext" connectionString=".\SQLExpress;AttachDbFilename=|DataDirectory|neodb.mdf; Database=neodb;Trusted_Connection=Yes;" providerName="System.Data.SqlClient"/>
</connectionStrings>
and
<connectionStrings>
<add name="EFDbContext" connectionString="Data Source=.SQLEXPRESS;Database=neodb.mdf;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
Also as I understand the *.mdf is an SQL server database file type and .dbo is owner of file when it's included in the initial catalog ? What's the initial catalog anywhere ?
If you have the *.mdf placed in App_Data folder, using this format works:
<connectionStrings>
<add name="ConnectionName"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|DatabaseName.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
There is a simple way to retrieve the connection string to each database.
Double click on "DataBase.mdf" file in Solution Explorer > right click on the "DataBase.mdf" file in Server Explorer > click "Properties" > Now you can see the connection string (under the "Connection" header) in the properties menu!
If you wanted the database to be created in your App_Data folder. You can use the following ConnectionString:
<connectionStrings>
<add name="ConnectionName" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
Alternatively you can use:
<add name="ConnectionName" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=MyDatabase;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
Also you will see MyDatabase.mdf and .ldf database files are created in the C:\Users\YourUserName Folder.