none
Could not load type - Membership p/ Oracle RRS feed

  • Pergunta

  • Olá pessoal

    Estou tentando, tentando e tentando adptar o funcionamento do membership de Ms Sql2005 para Oracle. Quando entro na guia security do "Asp.net Administration Toll" ocorre o seguinte erro:

    Could not load type 'Custom.AspNet.Membership.OracleMembershipProvider' from assembly 'System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config line 122)

    A namespace que customizei o provider para Oracle: Custom.AspNet.Membership.OracleMembershipProvider

    Segue trecho no web.config

    <connectionStrings>
    <clear/>
    <add
    name="ORA_STR_CNN"
    connectionString="Data Source=casso;User ID=wesley;Password=xxxx;Unicode=True"
    providerName="System.Data.OracleClient" />
    </connectionStrings>

    ...

    <membership defaultProvider="OracleMembershipProvider">
    <providers>
    <add connectionStringName="ORA_STR_CNN" enablePasswordRetrieval="true"
    enablePasswordReset="true" requiresQuestionAndAnswer="true"
    writeExceptionsToEventLog="true" name="OdbcProvider" type="Custom.AspNet.Membership.OracleMembershipProvider" />
    </providers>
    </membership>

    Agora do maching.config


    <membership>
    <providers>
    Linha 122 <add name="OracleMembershipProvider" type="Custom.AspNet.Membership.OracleMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalOracle" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />

    <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="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
    </providers>
    </membership>



    Será que existe uma luz pois parece sem explicação técnica !

    Obrigado pela Atenção!
    sexta-feira, 22 de setembro de 2006 01:18

Respostas

  • Ola wesley,

    Chegou a adicionar essa sua DLL com o provider no GAC?
    sexta-feira, 22 de setembro de 2006 02:29
    Moderador
  • Wesley,

    Porque não tenta fazer o download do Microsoft PetShop 4.0, ele já tem um membership para Oracle implementado nele...

    Veja abaixo o link para baixa-lo e ler sua documentação..

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4X.asp

     

     

     

    Espero ter ajudado!

    sexta-feira, 22 de setembro de 2006 02:35
  • Bom Dia! Israel

    O que seria isso, GAC? Seria a pasta bin do meu projeto?
    - No caso eu criei esta namespace dentro do meu project e não uma dll via classyLibrary.

    Obrigado

     
    sexta-feira, 22 de setembro de 2006 11:17
  • Ola Wesley,

    O problema está aqui:

    <membership>
    <providers>
    <add name="OracleMembershipProvider" type="Custom.AspNet.Membership.OracleMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalOracle" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />

    Se analisar o System.Web que grifei em vermelho, ali é o nome da DLL que você criou e escreveu o código do provider lá dentro. Se você vai utilizar essa DLL somente neste projeto, então você não precisa alterar o machine.config, ou seja, faz essa inserção deste provider no Web.Config da aplicação e deixe a DLL na pasta \bin da mesma.

    Agora, se você for utilizar por mais de um projeto, então você adiciona o provider no machine.config e também adiciona a DLL na GAC - Global Assembly Cache. O GAC é um repositórios de assemblies que são compartilhados por várias aplicações. Se analisar as DLLs do .NET Framework, verá que todas elas, ou grande parte delas, estão no GAC. Este GAC é criado automaticamente quando instalamos o .NET Framework no máquina/servidor.

    Para incluir a sua DLL no GAC, você tem duas opções: via linha de comando ou através do Painel de Controle. Para exemplificar, vou mostrar como é via linha de comando:

    1 - Abra o Prompt do Visual Studio .NET 2005
    2 - Digite: gacutil.exe -i "C:\TuaDLLComProvider.dll"

    Importante: Só que lembre-se que a sua DLL deverá estar assinada com StrongName, senão não é possível adicioná-la no GAC. Maiores Informações e o passo-a-passo pode ser visto neste link: http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=106
    sexta-feira, 22 de setembro de 2006 11:27
    Moderador

Todas as Respostas

  • Ola wesley,

    Chegou a adicionar essa sua DLL com o provider no GAC?
    sexta-feira, 22 de setembro de 2006 02:29
    Moderador
  • Wesley,

    Porque não tenta fazer o download do Microsoft PetShop 4.0, ele já tem um membership para Oracle implementado nele...

    Veja abaixo o link para baixa-lo e ler sua documentação..

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4X.asp

     

     

     

    Espero ter ajudado!

    sexta-feira, 22 de setembro de 2006 02:35
  • Bom Dia! Israel

    O que seria isso, GAC? Seria a pasta bin do meu projeto?
    - No caso eu criei esta namespace dentro do meu project e não uma dll via classyLibrary.

    Obrigado

     
    sexta-feira, 22 de setembro de 2006 11:17
  • Ola Wesley,

    O problema está aqui:

    <membership>
    <providers>
    <add name="OracleMembershipProvider" type="Custom.AspNet.Membership.OracleMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalOracle" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />

    Se analisar o System.Web que grifei em vermelho, ali é o nome da DLL que você criou e escreveu o código do provider lá dentro. Se você vai utilizar essa DLL somente neste projeto, então você não precisa alterar o machine.config, ou seja, faz essa inserção deste provider no Web.Config da aplicação e deixe a DLL na pasta \bin da mesma.

    Agora, se você for utilizar por mais de um projeto, então você adiciona o provider no machine.config e também adiciona a DLL na GAC - Global Assembly Cache. O GAC é um repositórios de assemblies que são compartilhados por várias aplicações. Se analisar as DLLs do .NET Framework, verá que todas elas, ou grande parte delas, estão no GAC. Este GAC é criado automaticamente quando instalamos o .NET Framework no máquina/servidor.

    Para incluir a sua DLL no GAC, você tem duas opções: via linha de comando ou através do Painel de Controle. Para exemplificar, vou mostrar como é via linha de comando:

    1 - Abra o Prompt do Visual Studio .NET 2005
    2 - Digite: gacutil.exe -i "C:\TuaDLLComProvider.dll"

    Importante: Só que lembre-se que a sua DLL deverá estar assinada com StrongName, senão não é possível adicioná-la no GAC. Maiores Informações e o passo-a-passo pode ser visto neste link: http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=106
    sexta-feira, 22 de setembro de 2006 11:27
    Moderador