I have an ASP.net web application hosted in IIS. This application use SQL Server.
I removed connection string in web.config. But when I start the application, it is still connected to it.
The connection string was nowhere explicitly stated.
how does it work?
By default the machine.config located in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config have the following connection string configured.
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
By leaving the <connectionStrings> section of your web.config empty you are not removing the default connectionstring. To ensure that you have no configured connection string you should use a <clear /> element in your web.config file.
<connectionStrings>
<clear />
</connectionStrings>
Related
I am referencing 2 databases in ASP.NET using Entity Framework.
In my web.config file, I can see the connection strings for the 2 databases:
<connectionStrings>
<add name="RContext"
connectionString="metadata=res://*/Models.RModel.csdl|res://*/Models.RModel.ssdl|res://*/Models.RModel.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\SQLEXPRESS;initial catalog=RStreamline;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
<add name="CEntities"
connectionString="metadata=res://*/Models.CModel.csdl|res://*/Models.CModel.ssdl|res://*/Models.CModel.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\SQLEXPRESS;initial catalog=RStreamline;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
Can I somehow implement alternate connection strings where the datasource refers to the prod server for the release?
This is typically handled with web.config transforms.
In your project you would have:
web.config
web.Release.config
For example in your web.Release.config transform you would have something like this:
<?xml version="1.0"?>
<configuration xmlns:xdt="https://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="RContext"
connectionString="RContext-Prod-Connection-String"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
<add name="CEntities"
connectionString="CEntities-Prod-Connection-String"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
</configuration>
You'll notice the xdt:Transform="SetAttributes" xdt:Locator="Match(name)" bit, which says, in the main web.config find the connectionString by name and replace its attributes with the ones defined here.
This will automatically happen when you publish the application.
I've created a .net service that work with a database declared in web.config file. Now the project evolved and i need to query more than 1 database, how can i do this in web.config and then specify the database i want to query in the c# files?.
Here's how the current database is specified:
<connectionStrings>
<add name="stringName" connectionString="Data Source=XXXXXXXXX;Initial Catalog=DBName;Persist Security Info=True;User ID=UsrID;Password=bazinga;Application Name=AppName;Connect Timeout=20" providerName="System.Data.SqlClient"/>
</connectionStrings>
Thanks!
You just add another item to the connectionStrings section with a different name specification.
How your program calls the database is another story and I do not have the section of code which is defining the existing one. You would just need to find that and use the same method, just adding another variable to identify it.
<connectionStrings>
<add name="stringName" connectionString="Data Source=XXXXXXXXX;Initial Catalog=DBName;Persist Security Info=True;User ID=UsrID;Password=bazinga;Application Name=AppName;Connect Timeout=20" providerName="System.Data.SqlClient"/>
<add name="stringName2" connectionString="Data Source=XXXXXXXXX;Initial Catalog=DBName;Persist Security Info=True;User ID=UsrID;Password=bazinga;Application Name=AppName;Connect Timeout=20" providerName="System.Data.SqlClient"/>
</connectionStrings>
I have a developed a application in c#,asp.net web application(using only inside our company) and finally am deploying the application in server PC (different host and port )allocated for this purpose.
When i developing or maintaining the application in my PC, having different host and port, every time when i need to publish im changing the connection string in web.config and and copying app folder in server PCs, interpub->wwwroot.
Is there any option to avoid each time changes? i.e, for publishing i will use seperate web.config and for developing work i use seperate web.config.
Server PC- web.config, connection string:
<connectionStrings>
<add name="MySqlConnectionString" connectionString="server=192.168.3.5;user id=root;password=sim;database=simpayroll;allowuservariables=True;port=3306"
providerName="MySql.Data.MySqlClient" />
<add name="simpayrollConnectionString" connectionString="server=192.168.3.5;user id=root;port=3306;password=sim;database=simpayroll;persistsecurityinfo=True;allowuservariables=True"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
My local Web.config
<connectionStrings>
<add name="MySqlConnectionString" connectionString="server=localhost;user id=root;password=root;database=simpayroll;allowuservariables=True;port=3306"
providerName="MySql.Data.MySqlClient" />
<add name="simpayrollConnectionString" connectionString="server=localhost;user id=root;port=3306;password=root;database=simpayroll;persistsecurityinfo=True;allowuservariables=True"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
You can use web.config transformations to over come with your problem
In your Web.Release.Config file,
<connectionStrings xdt:transform="Replace">
<add name="MySqlConnectionString" connectionString="your connection string"
providerName="MySql.Data.MySqlClient" />
<add name="simpayrollConnectionString" connectionString="your connection string"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>
I have connected from my PC to my instance RDS (MSSQL Server Express) using Managment Studio without problems, because I have already configured the policy groups and other stuff.
My "simple" problem is when I try to connect from my WebApp, I have a web.config and this is my configuration in ASP.NET MVC 5 Project... very easy:
Can you help to configure my connection string correctly?
Thanks!!
<add name="Entities" connectionString="metadata=res://*/Business.Interactive.Model.csdl|res://*/Business.Interactive.Model.ssdl|res://*/Business.Interactive.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=aa1XXXXXXXXXbi.cruXXXXXXym4.eu-west-1.rds.amazonaws.com:1433;Database=Business.interactive.gci;User Id=userroot;
Password=XXXXXXXX;pooling=False;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
<add name="myBusinessContext" connectionString="Data Source=aa1XXXXXXXXXbi.cruXXXXXXym4.eu-west-1.rds.amazonaws.com:1433;Database=Business.interactive.gci;User Id=userroot;
Password=XXXXXXXX;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
Ok, The problem was the length of the name of the database and I also I had to delete the number port:
Finally:
<add name="Entities" connectionString="metadata=res://*/Business.Interactive.Model.csdl|res://*/Business.Interactive.Model.ssdl|res://*/Business.Interactive.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=aa1XXXXXXXXXbi.cruXXXXXXym4.eu-west-1.rds.amazonaws.com;Database=Businessgci;User Id=userroot;
Password=XXXXXXXX;pooling=False;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
<add name="myBusinessContext" connectionString="Data Source=aa1XXXXXXXXXbi.cruXXXXXXym4.eu-west-1.rds.amazonaws.com;Database=Businessgci;User Id=userroot;
Password=XXXXXXXX;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
Regards!!
I tried to use integrated security SSIP but it takes anonymous user so any developer can access the database. So anybody have any solution for this problem?
<connectionStrings>
<add name="Local2" connectionString="Data Source=ADMIN-PC\SQLEXPRESS;Initial Catalog=NEOPLAST_LIVE;username="abc" password="****" providerName="System.Data.SqlClient" />
</connectionStrings>