By Nannette Thacker
This is an issue that seems to confuse a lot of new developers. How do you use the "connectionStringName" defined within the membership provider area of the web.config file within a custom membership provider? Big mouthful, eh? Okay, let's break it down.
Within the web.config file, you may define your connection strings. For our example, below I am setting up a connection string to a SQL Server database within my project's App_Data folder, but it could be a connection string to a remote database on a database server as well.
<connectionStrings> <add name="SSSDataMDFConnectionString" connectionString="Data Source=.\SQLEXPRESS; AttachDbFilename=|DataDirectory|\SSSDatabase.mdf; Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings>
In the above example, I have named my connection string
SSSDataMDFConnectionString. Now I want to setup my custom Membership Provider in the system.web section of my web.config:
<membership defaultProvider="SSSMembershipProvider"> <providers> <clear/> <add name="SSSMembershipProvider" type="SSSMembershipProvider" requiresQuestionAndAnswer="false" enablePasswordRetrieval="true" enablePasswordReset="true" description="Custom Membership Provider" requiresUniqueEmail="true" applicationName="/" passwordFormat="clear" userIsOnlineTimeWindow="15" connectionStringName="SSSDataMDFConnectionString"/> </providers> </membership>
In the above example, I have inserted the connection string name within the "connectionStringName" property. Note that if your custom membership provider is defined within a namespace, to be sure to add that to the name of the provider itself. For instance, if your namespace is "SSS" then you would add the namespace to the definition:
<membership defaultProvider="SSS.SSSMembershipProvider"> <providers> <clear/> <add name="SSS.SSSMembershipProvider" type="SSS.SSSMembershipProvider"
Now let's look at a few snippets from our custom membership provider class. In the snippet below, notice I have defined the connection string variable.
Public Class SSSMembershipProvider Inherits MembershipProvider Public connStr As String
Typically, you may obtain the value of various configuration file settings with the use of config():
However, we need to use the ConfigurationManager.ConnectionStrings Property to obtain the configuration setting. Within the initialize function of the class I now retrieve the value of the actual connection string that is associated with the name defined in the web.config:
Public Overrides Sub Initialize(ByVal name As String, _ ByVal config As System.Collections.Specialized.NameValueCollection) connStr = ConfigurationManager.ConnectionStrings(config("connectionStringName")).ConnectionString
The above is a very long line, and just in case it is cut off on the right, I will break it on 2 lines so you don't miss it:
connStr = ConfigurationManager.ConnectionStrings( config("connectionStringName")).ConnectionString
Now you're all set to use this in your class functions for accessing the connection:
Using conn As New SqlConnection(connStr) conn.Open()
May your dreams be in ASP.NET!