Search code examples
asp.netmembershipprofile

Asp.net profile in a separate assembly


I have a web application which uses membership and profiles. I successfully used the WebProfileBuilder extension, so my profile class is correctly generated, and is working nicely.

However, after a new request of my client, I need now to move that profile management part into another assembly (so I'd be able to get profile information in a windows service running on the same machine).

What I made is created the new assembly, moved my generated profile file, and tried to use it from the other assembly, but without any success. I always get a SettingsPropertyNotFoundException. My thought is that the profile system doesn't know where to find its connection information, so I tried to add the connectionstring and provider in the app.config of this assembly, but this doesn't seem to work.

What am I missing ? Is it possible to do ?

Thanks in advance!


Solution

  • Ok I found what's wrong... Thanks to this blog post:

    http://fredrik.nsquared2.com/viewpost.aspx?postid=244&showfeedback=true

    The only thing I needed to do is add applicationName="/" in my provider configuration, in the app.config. (which is the application name, can be found inside the aspnet_Applications table in the DB.

    <configuration>
    
      <connectionStrings>
        <add
            name="MyConnectionString"
            connectionString="Data Source=...;Initial Catalog=...;User ID=...;Password=..."
            providerName="System.Data.SqlClient" />
      </connectionStrings>
    
      <system.web>
        <profile
          enabled="true"
          defaultProvider="Sql2008ProfileProvider">
          <properties>
            <add name="UserLevel" type="integer"/>
            <add name="value1" type="string" />
            <add name="value2" type="string"  />
            <add name="value3" type="string" />
            <add name="value4" type="string"/>
          </properties>
    
          <providers>
            <clear/>
            <add
                name="Sql2008ProfileProvider"
                type="System.Web.Profile.SqlProfileProvider"
                connectionStringName="MyConnectionString"
                applicationName="/"
                />
          </providers>
    
        </profile>
      </system.web>
    
    </configuration>