22 messaggi dal 28 luglio 2010
Salve, ho uno strano problema.

Avevo iniziato un sito asp .net con visual web developer express edition 2008.
Avevo creato un provider personalizzato per i membri e i ruoli in quanto il db era access quindi AccessMembershipProvider che eredita da MembershipProvider.
Asp net era la ver 3.5

Fin qui tutto ok, funziona il login con questo db alternativo.

Poi per problemi col programma, passo a visual web developer express edition 2010, il programma all'apertura del sito web fa in automatico una conversione che non ho capito a che servisse, non credo di essere passato in automatico alla versione 4.0 del framework, nel web confing ho un misto tra assembly 3.5 e 4.0, mah.

Comunque il sito funziona, ma mi sottolinea come se fosse errore la classe MembershipProvider e non capisco perchè. Il sito funziona perfettamente.
L'using è la stessa di prima
using System.Web.Security;


Se passo sull'errore in un popup leggo impossibile trovare lo spazio dei nomi "MembershipProvider", manca una direttiva using o un riferimento a un assembler.

Eppure funziona...

Che debba cambiare qualcosa sugli assambler? Se si come? Tnx
la conversione è per il file del progetto, non cambia la versione .net

Prova ad aggiungere questo nel web.config

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
</configuration>

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
22 messaggi dal 28 luglio 2010
fileman ha scritto:
la conversione è per il file del progetto, non cambia la versione .net

Prova ad aggiungere questo nel web.config

<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
</configuration>


Ciao, grazie della risposta, tuttavia non ho risolto purtroppo

Dopo averlo inserito esce questo messaggio nell'area Errori, Warning, Messaggi:
Inpossibile trovare informazioni sullo schema per l'attributo 'useLegacyV2RuntimeActivationPolicy'. 


Serve che ti posti il web.config? Anche se è abbastanza lungo, il programma ha aggiunto in automatico sezioni man mano che creavo il sito.

Ps. Ho chiuso il tag del tuo codice con / in quanto mi dava errore.
quel codice serve quando usi .net 4 misto alle vecchie versioni, si mancava la / alla fine :-)

Se hai più progetti, hai provato a passarli tutti alla stessa versione del framework? magari alla 3.5 che non dava errori ;-)

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
devi assicurarti che tutti i progetti appartenenti alla soluzione abbiano lo stesso framework .net.

Se continui ancora ad avere problemi, ti consiglio di pulire per bene il webconfig... prova creando un sito vuoto, prendi il web.config da lì e lo usi come template

Davide Guida
Technical Architect @ Razorfish Healthware
http://davideguida.altervista.org
22 messaggi dal 28 luglio 2010
ho un solo progetto, anzi, non è nemmeno salvato come progetto, l'ho creato come sito web.

Ho ripulito il web config da un sacco di informazioni che non ho inserito io ma niente.
Ora il web config è piccolo posso anche postarlo
     
<?xml version="1.0"?>     
<configuration>     
     
  <!-- Qui viene risolto in maniera relativa il percorso al db -->     
  <connectionStrings>     
    <add name="MyAccessPath" connectionString="Provider=Microsoft.Jet.Oledb.4.0;Data Source=|DataDirectory|iST.mdb" providerName="System.Data.OleDb"/>     
  </connectionStrings>     
  <system.web>     
    <!--      
            Impostare compilation debug="true" per inserire i      
            simboli di debug nella pagina compilata. Poiché tale operazione ha effetto      
            sulle prestazioni, impostare questo valore su true      
            solo durante lo sviluppo.     
        -->     
    <compilation debug="false">     
      <assemblies>     
        <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>     
      </assemblies>     
    </compilation>     
    <!--     
            La sezione <authentication> consente di configurare      
            la modalità di autenticazione della sicurezza utilizzata da      
            ASP.NET per identificare un utente in ingresso.     
            requireSSL indica la richiesta di codifica SSL per le credenziali     
            slidingExpiration indica se il cookie debbe scadere in maniera scalabili, ossia 30 min dopo     
            l'ultima richiesta dell'applicazione     
        -->     
    <authentication mode="Forms">     
      <forms name="*******" loginUrl="login.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true"/>     
    </authentication>     
    <!-- API MembershipProvider -->     
    <membership defaultProvider="AccessMembershipProvider">     
     
      <providers>     
        <clear/>     
        <add name="AccessMembershipProvider"     
             type="AccessMembershipProvider"     
             connectionStringName="MyAccessPath"     
             requiresQuestionAndAnswer="true"     
             requiresUniqueEmail="true" enablePasswordRetrieval="false"     
             enablePasswordReset="false"     
             passwordFormat="Hashed"     
             connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|iST.mdb;Persist Security Info=False" minRequiredNonalphanumericCharacters="0"/>     
      </providers>     
    </membership>     
    <!-- API RoleProvider -->     
    <roleManager enabled="true" defaultProvider="AccessRoleProvider" cookieName="*******_roles" cookieTimeout="30" cookiePath="/" cookieProtection="All" cookieRequireSSL="false">     
      <providers>     
        <clear/>     
        <add name="AccessRoleProvider" type="AccessRoleProvider" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|iST.mdb;Persist Security Info=False"/>     
      </providers>     
    </roleManager>     
  </system.web>     
</configuration>     


Una cosa che non capisco è che cancellando tutto nel web config lasciando solo
<?xml version="1.0"?>   
<configuration>   
</configuration>   

da errore lo stesso, mentre se escludo il web.config dal progetto, da 0 errori e il sito funziona (a parte la parte d'autenticazione).
Non capisco perchè da errore quando in realtà funziona, mi da un fastidio e devo eliminarlo per forza perchè presentarlo a un professore, non posso portare il sito con errori.

  
Errore  1  Impossibile trovare il tipo o il nome dello spazio dei nomi 'MembershipProvider'; probabilmente manca una direttiva using o un riferimento a un assembly  C:\Documents and Settings\Gege\Documenti\Visual Studio 2010\WebSites\SitoMariEsame\App_Code\AccessMembershipProvider.cs  15  41  C:\...\SitoMariEsame\  

Modificato da mishima il 02 settembre 2010 17.27 -
non è che la reference all'assembly è su versione specifica 3.5..... ?

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
-Albert Einstein-
22 messaggi dal 28 luglio 2010
fileman ha scritto:
non è che la reference all'assembly è su versione specifica 3.5..... ?


Ho controllato sul mio pc, non ho piu' la dll ver 3.5 System.Web, infatti avevo aggiunto la 4 perchè solo quella mi faceva vedere nel menu' di scelta per aggiungere il riferimento. Evidentemente quando ho installato il framework 4.0 me l'ha aggiornata, non lo so, sono poco pratico di dll.

Comunque alla fine i Provider (Membership e Role) sono presenti anche nel framework 4.0, dovrebbe andare bene.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.