ciao Ciro,
Cicico ha scritto:
Solitamente questo problema è dovuto al fatto che il database non è raggiungibile
Non andare a memoria ma ragiona sempre sul testo dell'errore che ti viene mostrato.
Impossibile trovare la stored procedure 'SELECT Contendenti.*
Stai cercando di inviare una query, ma il SqlCommand pensa che quella che gli hai inviato sia il nome di una stored procedure, anziché una query SQL. Come mai?
Se stai effettivamente cercando di eseguire una query, allora hai incorrettamente impostato la
proprietà CommandType del SqlCommand su "StoredProcedure". Correggi questa impostazione e questo problema dovrebbe risolversi.
Se invece devi effettivamente eseguire una stored procedure, allora c'è qualche altro codice nella tua applicazione che ha sovrascritto il CommandText che avevi originariamente assegnato al SqlCommand.
Se è questo il caso, ecco dimostrata l'importanza di creare e distruggere gli oggetti "connessi" come SqlConnection e SqlCommand nel tempo strettamente necessario.
Tornando al codice che ti ho postato ieri: quello mostra come istanziare una nuova SqlConnection per poi distruggerla non appena possibile. Quello che ho dimenticato di dire è che la stessa cosa dovresti farla anche con ogni SqlCommand legato a quella connesione.
Riposto il codice di ieri, questa volta completo (giusto per dimostrare il concetto - perdona eventuali errori di sintassi).
<WebMethod()> _
Public Function AccessoUtente(ByVal CodContendente As String, Password As String) As Boolean
'Qui creo la nuova istanza con la parola chiave New
Using SqlMainConn As New SqlConnection(tuaConnectionString)
SqlMainConn.Open()
'Qui creo il SqlCommand
Using SqlCmdUtentePermesso As SqlCommand = SqlMainConn.CreateCommand()
'Imposto il command text con il nome della stored procedure
SqlCmdUtentePermesso.CommandText = "verifica_utente"
'Indico che si tratta proprio di una stored procedure
SqlCmdUtentePermesso.CommandType = CommandType.StoredProcedure;
SqlCmdUtentePermesso.Parameters("@CodContendente").Value = CodContendente
SqlCmdUtentePermesso.Parameters("@Password").Value = Password
SqlCmdUtentePermesso.ExecuteNonQuery()
Return (Int(SqlCmdUtentePermesso.Parameters("@RETURN_VALUE").Value) = 1)
'Questi blocchi using chiuderanno e dereferenzieranno gli oggetti
End Using
End Using
End Function
Cicico ha scritto:
sto usando l'autenticazione tramite windows
Mi sembra di aver capito che i tuoi utenti sono memorizzati in un database SQL Server, quindi la Windows Authentication non è applicabile in questo caso. Puoi chiarire? Stai sviluppando un sito internet o intranet?
Cicico ha scritto:
mi conviene generare personalmente codice per ogni form che vado a creare senza usare i validatori che fornisce .net ?!?!
Sì, usa pure i validatori di ASP.NET. Con ASP.NET 4.5 hai due modalità di validazione client. C'è un post di qualche giorno fa in cui se ne è parlato.
http://forum.aspitalia.com/forum/post/403620/Piccolo-Chiarimento-Errore-UnobtrusiveValidationMode.aspxSe scegli di usare la modalità unobtrusive, trovi un aiuto qui:
http://www.codeproject.com/Articles/287278/Unobtrusive-Validation-with-ASP-NEThttp://www.codeguru.com/csharp/.net/net_asp/using-unobstructive-validation-in-asp.net-4.5-web-forms.htmciao,
Moreno
Modificato da BrightSoul il 07 giugno 2014 13.40 -