Introduction
In this post you are going to take a
look at Distributed ConnectionString in ASP.NET. We will store our configuration
settings in separate configuration file (that's I am calling distributed).
Managing huge list of
ConnectionStrings in one configuration file (Web.config) is one of the difficult
jobs in ASP.NET based web designing. So, I am writing this video post for you
that will light a way to deal.
Also, Web.config file has much
information already so placing connection strings in that creates management
difficulties if you work on big projects.
What I am going to do?
I have a Web.config file in my
project that has following information (including connection strings):
<?xml
version="1.0"?>
<!--
Note: As an alternative to hand editing this file you can use the
web admin tool to configure settings for your application. Use
the Website->Asp.Net Configuration option in Visual Studio.
A full list of settings and comments can be found in
machine.config.comments usually located in
\Windows\Microsoft.Net\Framework\vx.x\Config
-->
<configuration>
<connectionStrings>
<add
name="ConnStr1"
connectionString="infos***"/>
<add
name="ConnStr2"
connectionString="infos***"/>
<add
name="ConnStr3"
connectionString="infos***"/>
<add
name="ConnStr4"
connectionString="infos***"/>
<add
name="ConnStr5"
connectionString="infos***"/>
<add
name="ConnStr6"
connectionString="infos***"/>
</connectionStrings>
<system.web>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during development.
-->
<compilation
debug="true">
<assemblies>
<add
assembly="System.Core,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add
assembly="System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add
assembly="System.Data.DataSetExtensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add
assembly="System.Xml.Linq,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<!--
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
-->
<authentication
mode="Windows"/>
<!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
<pages>
<controls>
<add
tagPrefix="asp"
namespace="System.Web.UI"
assembly="System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add
tagPrefix="asp"
namespace="System.Web.UI.WebControls"
assembly="System.Web.Extensions,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</controls>
</pages>
<httpHandlers>
<remove
verb="*"
path="*.asmx"/>
<add
verb="*"
path="*.asmx"
validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add
verb="*"
path="*_AppService.axd"
validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add
verb="GET,HEAD"
path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
validate="false"/>
</httpHandlers>
<httpModules>
<add
name="ScriptModule"
type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
</system.web>
<system.codedom>
<compilers>
<compiler
language="c#;cs;csharp"
extension=".cs"
warningLevel="4"
type="Microsoft.CSharp.CSharpCodeProvider,
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption
name="CompilerVersion"
value="v3.5"/>
<providerOption
name="WarnAsError"
value="false"/>
</compiler>
<compiler
language="vb;vbs;visualbasic;vbscript"
extension=".vb"
warningLevel="4"
type="Microsoft.VisualBasic.VBCodeProvider,
System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption
name="CompilerVersion"
value="v3.5"/>
<providerOption
name="OptionInfer"
value="true"/>
<providerOption
name="WarnAsError"
value="false"/>
</compiler>
</compilers>
</system.codedom>
<!--
The system.webServer section is required for running ASP.NET AJAX under
Internet
Information Services 7.0. It is not necessary for previous version of
IIS.
-->
<system.webServer>
<validation
validateIntegratedModeConfiguration="false"/>
<modules>
<remove
name="ScriptModule"/>
<add
name="ScriptModule"
preCondition="managedHandler"
type="System.Web.Handlers.ScriptModule,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove
name="WebServiceHandlerFactory-Integrated"/>
<remove
name="ScriptHandlerFactory"/>
<remove
name="ScriptHandlerFactoryAppServices"/>
<remove
name="ScriptResource"/>
<add
name="ScriptHandlerFactory"
verb="*"
path="*.asmx"
preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add
name="ScriptHandlerFactoryAppServices"
verb="*"
path="*_AppService.axd"
preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add
name="ScriptResource"
preCondition="integratedMode"
verb="GET,HEAD"
path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>
</system.webServer>
<runtime>
<assemblyBinding
appliesTo="v2.0.50727"
xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity
name="System.Web.Extensions"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect
oldVersion="1.0.0.0-1.1.0.0"
newVersion="3.5.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="System.Web.Extensions.Design"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect
oldVersion="1.0.0.0-1.1.0.0"
newVersion="3.5.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
In above configuration file, our one
of the very important information that is connection string is hidden in other
codes, so let's separate it.
Create a new configuration file and
delete all information appeared by default in that file and cut the following
information from above file and add it in new configuration file:
<connectionStrings>
<add
name="ConnStr1"
connectionString="infos***"/>
<add
name="ConnStr2"
connectionString="infos***"/>
<add
name="ConnStr3"
connectionString="infos***"/>
<add
name="ConnStr4"
connectionString="infos***"/>
<add
name="ConnStr5"
connectionString="infos***"/>
<add
name="ConnStr6"
connectionString="infos***"/>
</connectionStrings>
Now in the source file (Web.config),
we need to add the reference of the new configuration file in our Web.config
file, for this add following code in Web.config file at the exact location where
we cut.
<connectionStrings configSource="new
config file name" />
Now, run the project and see the
magic.
Video Post