Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Null reference exception su oggetto esistente... [8o]
mercoledì 18 giugno 2008 - 16.13
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
pozzoli.samuele
Profilo
| Senior Member
219
messaggi | Data Invio:
mer 18 giu 2008 - 16:13
Anzitutto ben ritrovati a tutti...
Aiuto!!! Non ne esco più.
Magari qualche buon'anima c'è cascato prima di me ed ha avuto un'intuizione geniale, ricolutiva del problema.
Facile, no... L'ho fatto MILIARDI di volte. Metto una tabella in una pagina, con la riga con l'intestazione. Leggo un db... Ed aggiungo le righe a seconda di quello che ho nel db.
Dunque. Funziona tutto alla perfezione, ovviamente, sul mio pc di sviluppo. Messo sul server aruba, fila tutto alla grande, finchè non deve inserire la riga nella tabella.
Creo le celle, metto il testo delle celle a seconda del contenuto delle tuple, metto le celle nella riga... tutto ok, fin'ora... Quando cerco di mettere la riga nella tabella, crash. Errore. Attenzione, solo sul server aruba. L'istruzione Tabella.rows.add(riga) mi da un null reference exception.
Ovviamente la riga è inizializzata. Ci ho pure aggiunto tutte le celle, quindi funziona. L'unica cosa che può non essere inizializzata è la tabella. Ma qui sta il barbatrucco! La tabella è messa giù a design time. E' compilata dentro la pagina. C'è... E' un oggetto della pagina!!!
Sigh sob!!! L'ho fatto milioni di volte anche all'interno dello stesso sito! Giuro, funziona! E qui no...
Nessuno ha un'idea, eh?
PS: Scusate il bipost, mi è andato in errore il primo inserimento!!!
dante
Profilo
| Junior Member
70
messaggi | Data Invio:
mer 18 giu 2008 - 18:14
Ciao Samuele,
sicuro che tu abbia tutti i campi e/o nominati bene?
Io ci darei una controllatina
19018
Profilo
| Expert
502
messaggi | Data Invio:
mer 18 giu 2008 - 19:55
Puoi postare tutto il log dell'eccezione?
ciao
Stefano Passatordi
http://blogs.dotnethell.it/stem/
pozzoli.samuele
Profilo
| Senior Member
219
messaggi | Data Invio:
gio 19 giu 2008 - 08:41
Ecco il risultato della pagina:
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 51: cella3.Controls.Add(link2)
Line 52: riga2Tab.Cells.Add(cella3)
Line 53: MessaggiPubblici.Rows.Add(riga2Tab)
Line 54: Next
Line 55: conn.Close()
Source File: D:\Inetpub\webs\protezionecivileolgiateit\Amministrazione\messaggiPop\Default.aspx.vb Line: 53
La tabella messaggi pubblici, ovviamente, esiste ed è dichiarata nella pagina...
pozzoli.samuele
Profilo
| Senior Member
219
messaggi | Data Invio:
gio 19 giu 2008 - 08:47
>Ciao Samuele,
>sicuro che tu abbia tutti i campi e/o nominati bene?
>Io ci darei una controllatina
La controllatina, ovviamente ce l'ho data!
Inoltre ti è forse sfuggito che nel post segnalavo che sulla macchina di sviluppo il progetto funziona alla perfezione! Se un nome è scritto sbagliato, è scritto sbagliato sulla macchina di produzione, tanto quanto sulla macchina di sviluppo...
E se ti sta frullando una certa idea per la testa... E' vb, quindi non case sensitive. In ogni caso, anche i caratteri maiuscoli, sono al posto giusto. Sia nell'oggetto sulla pagina che nel codice.
Cerco di essere molto pulito almeno su queste cose!
Grazie comunque per il suggerimento!
19018
Profilo
| Expert
502
messaggi | Data Invio:
gio 19 giu 2008 - 10:44
>Ecco il risultato della pagina:
>
>Object reference not set to an instance of an object.
>Description: An unhandled exception occurred during the execution
>of the current web request. Please review the stack trace for
>more information about the error and where it originated in the
>code.
>
>Exception Details: System.NullReferenceException: Object reference
>not set to an instance of an object.
>
>Source Error:
>
>Line 51: cella3.Controls.Add(link2)
>Line 52: riga2Tab.Cells.Add(cella3)
>Line 53: MessaggiPubblici.Rows.Add(riga2Tab)
>Line 54: Next
>Line 55: conn.Close()
>
>Source File: D:\Inetpub\webs\protezionecivileolgiateit\Amministrazione\messaggiPop\Default.aspx.vb
>Line: 53
>
>La tabella messaggi pubblici, ovviamente, esiste ed è dichiarata
>nella pagina...
Tutto è dichiarato ma non tutto può essere istanziato in un dato momento...inserisci del codice per testare quale oggetto è null.
Stefano Passatordi
http://blogs.dotnethell.it/stem/
pozzoli.samuele
Profilo
| Senior Member
219
messaggi | Data Invio:
gio 19 giu 2008 - 10:54
MA... L'evento che lancia queste righe è on load... La tebelle della pagina DEVONO essere istanziate! O sbaglio?
Inoltre, celle e righe, le istanzio io direttamente in creazione degli oggetti!
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Messaggi Volontari
Dim dati As Data.DataTable = db.getTable("...")
For Each riga1 As Data.DataRow In dati.Rows
Dim riga1Tab As New TableRow
Dim cella1 As New TableCell
cella1.Text = riga1("Titolo")
riga1Tab.Cells.Add(cella1)
... Omissis ...
riga1Tab.Cells.Add(cella3)
MessaggiVolontari.Rows.Add(riga1Tab)
Next
'Messaggi Pubblici
Dim dati2 As Data.DataTable = db.getTable("...")
For Each riga2 As Data.DataRow In dati2.Rows
Dim riga2Tab As New TableRow
Dim cella1 As New TableCell
cella1.Text = riga2("Titolo")
riga2Tab.Cells.Add(cella1)
... Omissis ...
riga2Tab.Cells.Add(cella3)
MessaggiPubblici.Rows.Add(riga2Tab)
Next
conn.Close()
End Sub
E questo è tutto...
Non mi pare ci siano cose difficilissime...
19018
Profilo
| Expert
502
messaggi | Data Invio:
gio 19 giu 2008 - 11:01
>MA... L'evento che lancia queste righe è on load... La tebelle
>della pagina DEVONO essere istanziate! O sbaglio?
>
>Inoltre, celle e righe, le istanzio io direttamente in creazione
>degli oggetti!
>
>Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
>Handles Me.Load
> 'Messaggi Volontari
> Dim dati As Data.DataTable = db.getTable("...")
> For Each riga1 As Data.DataRow In dati.Rows
> Dim riga1Tab As New TableRow
> Dim cella1 As New TableCell
> cella1.Text = riga1("Titolo")
> riga1Tab.Cells.Add(cella1)
> ... Omissis ...
> riga1Tab.Cells.Add(cella3)
> MessaggiVolontari.Rows.Add(riga1Tab)
> Next
> 'Messaggi Pubblici
> Dim dati2 As Data.DataTable = db.getTable("...")
> For Each riga2 As Data.DataRow In dati2.Rows
> Dim riga2Tab As New TableRow
> Dim cella1 As New TableCell
> cella1.Text = riga2("Titolo")
> riga2Tab.Cells.Add(cella1)
> ... Omissis ...
> riga2Tab.Cells.Add(cella3)
DOVE ISTANZI CELLA3 ????
> MessaggiPubblici.Rows.Add(riga2Tab)
> Next
> conn.Close()
> End Sub
>
>E questo è tutto...
Non mi pare ci siano cose difficilissime...
>
Stefano Passatordi
http://blogs.dotnethell.it/stem/
pozzoli.samuele
Profilo
| Senior Member
219
messaggi | Data Invio:
gio 19 giu 2008 - 11:07
Nel pezzo omissis, ci sono dichiarate 2 celle ed aggiunte alle righe... Esattamente come per cella1.
Praticamente viene fuori il titolo e 2 link, uno per modificare ed uno per liminare...
Il codice è identico, solo le ho tolte per evitare di pubblicare i link su internet, è un settore amministrativo del sito, quello dove riscontro l'errore. Sono pagine protette, ma onde prevenire attacchi dovuti ad una disattenzione...
19018
Profilo
| Expert
502
messaggi | Data Invio:
gio 19 giu 2008 - 11:09
Sicuro che db.getTable("...") restitusce qualcosa?
Devi testare ogni singolo oggetto e controllare quale è null.
ciao
Stefano Passatordi
http://blogs.dotnethell.it/stem/
pozzoli.samuele
Profilo
| Senior Member
219
messaggi | Data Invio:
gio 19 giu 2008 - 11:13
Si, sicuro! Ho 2 sistemi di controllo.
Il primo è il for each che se non ci son righe, semplicemente non esegue il ciclo. Testato...
Il secondo, è quando assegno il valore alle celle... O almeno... Se l'errore fosse per questo dovrebbe andare in errore in quel punto, non quando metto l riga nella tabella, sbaglio?
19018
Profilo
| Expert
502
messaggi | Data Invio:
gio 19 giu 2008 - 11:17
Ti ho detto come fare, testare ogni oggetto.
Fai scrivere su un file di log lo stato di ogni singolo oggetto che usi.
Per qualche motivo, sul server aruba qualche oggetto non viene istanziato..e devi capire quale altrimenti così non andrai molto lontano, è un problema che non si riscontra in locale e quindi non è facile individuarlo.
ciao
Stefano Passatordi
http://blogs.dotnethell.it/stem/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !