14 messaggi dal 28 marzo 2014
www.sigmabeta.it
Premetto che sono un neofita di .net.
Ho realizzato il mio primo lavoro con VWD2008 che in locale funziona bene.
Al momento di pubblicarlo su Aruba ho avuto il primo problema con SqlServer (che non accettava lo schema dbo).
Ho risolto seguendo i consigli di Peppedotnet che raccomando a tutti:
http://www.peppedotnet.it/Articoli/ConfigurareProviderMembershipRoleAruba.aspx

Ora ho un nuovo problema su host Aruba(che non si verifica in locale).
Riesco con successo a creare un nuovo utente ma se voglio effettuare log in con quelle credenziali ottengo il messaggio: "your login attempt was not successful. please try again".
Premetto che:
1.ho controllato che la crittografia della pw avvenga in host e locale con lo stesso metodo
2.Il nome del sito è lo stesso nel web.config e nelle tabelle di SqlServer
3. Ho accesso al db SqlServer di Aruba.

Sto fermo da due mesi cercando una soluzione e sebbene mi sembra che il problema affligga molti sviluppatori non ho ancora trovato una soluzione vagando per la rete.

Se necessario posso inviare copia del web.config .

Sergio
It's too late to be late again!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Sergio,
proviamo a verificare se il membership provider sta facendo il suo lavoro correttamente. Per il momento non usare i controlli Login di ASP.NET per creare l'utente, ma invoca direttamente i metodi della Membership API.

Dunque creati una nuova pagina aspx per fare dei test.
Dentro il Page_Load metti questo codice:
protected void Page_Load(object sender, EventArgs e){
  MembershipCreateStatus esitoCreazione;
  bool esitoVerificaCredenziali;

  string username = "MarioRossi";
  string password = "PwdComplessa123!";

  Membership.CreateUser(username, password, "mario.rossi@example.com", "Domanda password", "Risposta password", true, out esitoCreazione);
  esitoVerificaCredenziali = Membership.ValidateUser(username, password);

  Response.Write("Esito creazione utente: " + esitoCreazione.ToString() + "<br />");
  Response.Write("Verifica credenziali: " + esitoVerificaCredenziali.ToString());
}

Pubblica la pagina su Aruba, visitala digitando il suo url nella barra degli indirizzi del browser e vedi che risultato ti dà.

In pratica proviamo a creare l'utente con questo overload di CreateUser della Membership API. La variabile esitoCreazione ti dirà se l'utente è stato aggiunto (Success) o se si è verificato qualche problema.
Successivamente, invocando il metodo ValidateUser, abbiamo chiesto al provider di verificare la validità delle credenziali. Il valore di esitoVerificaCredenziali ti dirà se la verifica ha avuto successo (true) o no (false).

Posta i risultati che ti dà la pagina, così potremo decidere cosa fare dopo.

ciao,
Moreno
Modificato da BrightSoul il 10 aprile 2014 20.36 -

Enjoy learning and just keep making
14 messaggi dal 28 marzo 2014
www.sigmabeta.it
Prima di tutto grazie per la risposta.
Ho creato la pagina (avrei preferito del codice in VB perche' non uso C#, magari la prossima volta ti pregherei - se per te non e' problematico - di usare VB).
Probabilemente c'e' un errore di sintassi che mi ha segnalato anche VWD.
Ottengo quanto segue:
Server Error in '/' Application
Alla riga che inizia per Membership.CreateUser

Inoltre non ho capito se posso caricare la pagina che mi hai scritto senza modificare DB SQLServer e web.config. In pratica ho sostituito le mie Default.aspx e Deafault.aspx.vb con una Default.aspx con sola intestazione e ho denominato la tua pag. come Default.aspx.cs .

Spero ancora in un tuo aiuto.
Ciao.

Sergio
It's too late to be late again!
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

Sigmabeta ha scritto:

Inoltre non ho capito se posso caricare la pagina che mi hai scritto senza modificare DB SQLServer e web.config.

Non bisogna modificare o sostituire nulla. Semplicemente, da Visual Web Developer crea una nuova pagina aspx come sei abiutato a fare. Magari chiamala TestProvider.aspx, dato che il suo scopo è solo quello di verificare se il membeship provider sta lavorando bene.

All'interno del Page_Load (che avrai sicuramente usato tante volte), metti il codice che ti ho indicato. Usa questo tool per convertirlo in VB.NET, dato che questo è il tuo linguaggio preferito.
http://converter.telerik.com/

ciao,
Moreno
Modificato da BrightSoul il 13 aprile 2014 12.32 -

Enjoy learning and just keep making
14 messaggi dal 28 marzo 2014
www.sigmabeta.it
Ancora una volta grazie.
Succede una cosa strana, anzi non succede nulla.
Non solo non si crea il nuovo utente da VWD ma nemmeno su Aruba.
Cosa piu' strana e' che non viene neanche restituito alcun errore.

Non appare neanche il messaggio del Booleano che dovrebbe almeno essere negativo.

Ho provato a commentare la parte di codice che riguarda la creazione e sostituire con un utente esistente: nulla.

Ho aggiunto un "Response.Write(Hello World)" come prima istruzione su Page_load ma non appare neanche quello (Internet Explorer, FireFox).

Hai ancora pazienza?
Grazie!

Sergio
It's too late to be late again!
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Sergio,
penso che il metodo Page_Load non stia andando in esecuzione. Posta il codice della tua Sub Page_Load. Se stai scrivendo la pagina con VB.NET, dovrebbe essere simile al seguente:
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
  'qui codice
End Sub


ciao,
Moreno
Modificato da BrightSoul il 13 aprile 2014 16.31 -

Enjoy learning and just keep making
14 messaggi dal 28 marzo 2014
www.sigmabeta.it
Ciao.
Scusami ma avevo fatto un errore nel copiare dal traduttore C# >>> VB.
Ora funziona:
1) su VWD crea e verifica.
2) su Aruba crea ma in atto di verificare ottengo:Verifica credenziali: False

Credo che il bello inizi ora!

Ancora grazie.

Sergio
It's too late to be late again!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Sergio,

Sigmabeta ha scritto:

2) su Aruba crea ma in atto di verificare ottengo:Verifica credenziali: False

Ok, nel mentre che questa discussione prosegue, tu chiedi assistenza al forum di Aruba, spiegando cosa hai provato a fare. Magari loro sanno dirti esattamente qual è il problema.

Prima di arrenderci, cerchiamo di capire se c'è qualcosa che non va con l'utente che abbiamo creato con il metodo CreateUser.
  • Vai nel pannello di gestione del database e controlla che sia effettivamente stato creato un record all'interno della tabella aspnet_Users.
  • Svuota il metodo Page_Load della pagina di test e mettici dentro questo, così andiamo ad ispezionare lo stato dell'utente.
    'Recuperiamo l'utente MarioRossi che avevamo creato prima
    Dim utente As MembershipUser = Membership.GetUser("MarioRossi", False)
    If utente Is Nothing Then
      'Se è nothing, vuol dire che in realtà l'utente non è stato creato
      Response.Write("L'utente non esiste")
    Else
      'Altrimenti visualizzo le condizioni che potrebbero impedirne l'accesso
      Response.Write("L'utente è bloccato: " + utente.IsLockedOut.ToString() + "<br />")
      Response.Write("L'utente è approvato: " + utente.IsApproved.ToString() + "<br />")
    End If
    

    Posta il risultato che ottieni. Se l'utente risulta bloccato o non approvato, allora prova a sbloccarlo con UnlockUser o ad abilitarlo impostando IsApproved a True.


ciao,
Moreno
Modificato da BrightSoul il 14 aprile 2014 19.46 -

Enjoy learning and just keep making

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.