Custom Membership Provider Error

1

I have a custom asp.net membership class I am building where I have a helper function that the GetUser() method uses to convert the values from my database into a System.Web.Security.MembershipUser object.

private MembershipUser _converToMembershipUser(MembershipDBModel member)
    {

        System.Web.Security.MembershipUser membershipUser = new System.Web.Security.MembershipUser(
        this.Name,
        member.UserName,
        member.UserID.ToString(),
        member.Email,
        member.PasswordQuestion,
        member.Comment,
        member.IsApproved,
        member.IsLockedOut,
        member.CreationDate,
        member.LastLoginDate,
        member.LastActivityDate,
        member.LastPasswordChangedDate,
        member.LastLockedOutDate);

        return membershipUser;
    }

This is the error that I keep getting when the above method is being called. I have not idea how to get around this so any suggestion is very welcome.


System.IO.FileLoadException was caught

Message=The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

  Source=System.Web

  StackTrace:

       at System.Web.Security.Membership.Initialize()

       at System.Web.Security.MembershipAdapter.get_Providers()

       at System.Web.Security.MembershipUser..ctor(String providerName, String name, Object providerUserKey, String email, String passwordQuestion, String comment, Boolean isApproved, Boolean isLockedOut, DateTime creationDate, DateTime lastLoginDate, DateTime lastActivityDate, DateTime lastPasswordChangedDate, DateTime lastLockoutDate)

       at TMTechMembershipProvider.MembershipProvider._converToMembershipUser(MembershipDBModel member) in d:\Visual Studio 2010\Projects\TMTechMembershipProvider\TMTechMembershipProvider\TMTechMembershipProvider.cs:line 1005

       at TMTechMembershipProvider.MembershipProvider.GetUser(String username) in d:\Visual Studio 2010\Projects\TMTechMembershipProvider\TMTechMembershipProvider\TMTechMembershipProvider.cs:line 965

       at TMTechMembershipProvider.MembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status) in d:\Visual Studio 2010\Projects\TMTechMembershipProvider\TMTechMembershipProvider\TMTechMembershipProvider.cs:line 435
  InnerException: 


 System.Web.Security.MembershipAdapter.get_Providers() Initialize() The given assembly name or codebase was invalid.

config file

<?xml version="1.0"?>
<configuration>
  <appSettings></appSettings>

  <connectionStrings>
    <add name="MembershipDBContext" providerName="System.Data.SqlServerCe.4.0" connectionString="data source=MembershipDBContext.sdf"/>
  </connectionStrings>

  <system.web>
    <membership>
      <providers>
        <!--<remove name="AspNetSqlMembershipProvider"/>
        <add name="AspNetSqlMembershipProvider" type="TMTechMembershipProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cbae438f5bab0724" connectionStringName="MembershipDBContext" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="MyUnitTests" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>-->
        <clear/>
        <!--<add name="TMTechMembershipProvider.MembershipProvider" type="TMTechMembershipProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cbae438f5bab0724" connectionStringName="MembershipDBContext" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="MyUnitTests" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>-->
        <add name="TMTechMembershipProvider" 
             type="TMTechMembershipProvider.TempMembershipProvider" 
             connectionStringName="MembershipDBContext" 
             enablePasswordRetrieval="true" 
             enablePasswordReset="true" 
             requiresQuestionAndAnswer="true" 
             applicationName="MyUnitTests" 
             requiresUniqueEmail="true" 
             passwordFormat="Hashed" 
             maxInvalidPasswordAttempts="5" 
             minRequiredPasswordLength="6" 
             minRequiredNonalphanumericCharacters="1" 
             passwordAttemptWindow="10" 
             passwordStrengthRegularExpression=""/>
      </providers>
    </membership>

    <machineKey validationKey="EAA358B778400490DE16A414AC2144C740874D426214CA81D8265354535ACCA9C0238D5C20021D4335DBE1171F31C02F0AB8ADD5B1EE2A6E07CC768F04B20F30" decryptionKey="AF622C5C9796D67DEB876483F1341E3708CA056B1EB031CEAD6FD7CBD0F13A50" validation="SHA1" decryption="AES"/>

  </system.web>


  <!--<system.web>
    <membership>
      <providers>
        <remove name="AspNetSqlMembershipProvider"/>
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             connectionStringName="LocalSqlServer"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="1"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression="" />
      </providers>
    </membership>
  </system.web>-->
  <startup>
    <!--<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>-->
  </startup>
</configuration>
asp.net-membership
asked on Stack Overflow Apr 28, 2011 by ChiliYago • edited May 11, 2011 by ChiliYago

2 Answers

1

This is not likely to be a code issue, it is a dll reference issue.

You need to carefully review any "type", "assembly", or "publicKeyToken" xml attributes in your web.config. The most likely cause is that you've mis-copied the public key token for an assembly. I would start by checking anywhere you've referenced the System.Web assembly and make sure that the public key token is exactly right and that there are no mispellings in any type names.

In particular, check the type attribute in the add element under the provider and membership element in your web.config. Also, if the custom membership class is implemented in a separate dll, be certain that you are actually referencing the correct version of the System.Web assembly from that dll.

answered on Stack Overflow May 10, 2011 by quentin-starin • edited May 10, 2011 by quentin-starin
1

Error: "The given assembly name or codebase was invalid"

Your type attribute:

type="TMTechMembershipProvider.TempMembershipProvider" 

Your type attribute in your commented line:

type="TMTechMembershipProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cbae438f5bab0724"

Your comment:

i tend to agree but this is needle in haystack. This is what I thought the Fusion Log Viewer was for to help identify what is failing to load.

sry, but lol :)


Update 1: re the comment:

Just found it funny, couldn't resist. Meant no harm and was not imply anything with it, we've all been there.

Now on a more serious note, it still seems an issue with specifically that line.

Let's compare it with the type line of the asp.net provider:

type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

[Provider class (including the namespace)], [dll], [Version], ...

It seems you are missing either the class or the dll. Hoping that solves it, good luck.

answered on Stack Overflow May 11, 2011 by eglasius • edited May 11, 2011 by eglasius

User contributions licensed under CC BY-SA 3.0