Distributed ConnectionString in ASP.NET


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

Untitled.jpg
 


Similar Articles