salve a tutti ho un problema molto strano

da quando ho spostato il sito su un nuovo server (sempre all'interno della stessa società) si presenta uno strano errore

Riferimento a un oggetto non impostato su un'istanza di oggetto.
System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.


l'errore compare in diverse pagine (che si collegano al database)
ma la cosa più strana è che ricaricando la pagina l'errore scompare e tutto funziona a meraviglia
dalla società di hosting mi hanno, in un primo momento, fatto un cambio del pool applicativo dove risiede il sito web senza successo.. poi mi hanno "abbandonato" dicendo che loro non si occupano di programmazione

questo problema nel server "vecchio" non si era mai presentato... le pagine ovviamente non hanno subito alcun cambiamento

dove posso intervenire ?

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
Così è veramente dura. Dovresti intanto analizzare lo stacktrace e capire dove si verifica (non mi stancherò mai di dirlo, lo stacktrace *è* più utile del messaggio di errore stesso!!!).

Usi la session? per caso l'app pool ricicla?

m.
lo immaginavo :(

non uso le sessioni
e per quanto riguarda la seconda domanda sinceramente non lo so (anzi mi potresti spiegare un attimo il significato di "application pool ricicla" ? )

per lo stacktrace ecco cosa mi stampa

[NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.]
ASP.index_aspx.RisolviID2(Int32 id, String tipo) +227
ASP.index_aspx.__DataBind__control7(Object sender, EventArgs e) +126
System.Web.UI.Control.OnDataBinding(EventArgs e) +66
System.Web.UI.Control.DataBind() +26
System.Web.UI.Control.DataBind() +86
System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem) +127
System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource) +475
System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e) +48
System.Web.UI.WebControls.Repeater.DataBind() +23
System.Web.UI.Control.DataBind() +86
System.Web.UI.Control.DataBind() +86
ASP.index_aspx.Page_Load(Object obj, EventArgs e) +480
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750

sinceramente non sono in grado di decifrare eventuali errori anche perchè lo ripeto il codice è sempre quello e non ha mai dato problemi sul "vecchio" server ed inoltre anche sul "nuovo" server l'errore non è fisso ma bensì variabile
prima compare poi magari con un semplice f5 tutto torna ad essere visualizzato correttamente
mah !

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
Benissimo... si capisce chiaramente che l'errore è dentro al metodo
RisolviID2
che hai definito in pagina e accetta un int e una string.

Cosa fai dentro questo metodo? Controlli, ad es., che l'argomento string non sia null prima di operarci?

m.
mi scuso per il ritardo ma ho voluto analizzare i problemi sul mio sito

allora il problema non è legato a quella funzione tant'è che aggiornando la pagina lo stacktrace genera errori associati ad altre funzioni
tutte che hanno a che fare con il database mySQL

ed il codice è corretto lo dimostra il fatto che dopo qualche tentativo tutto torna a funzionare (ed è da sottolineare il fatto che nel 90% dei casi tutto funziona benissimo)


per connettermi al db utilizzo una libreria MySQLConnexion.MySQLConnexion

ecco le due istruzioni che imposto in ciascuna pagina
<%@ Import Namespace="MySQLConnexion.MySQLConnexion" %>
<%@ Import Namespace="Microsoft.Data.ODBC" %>

per esempio per caricare i dati in una select uso la seguente stringa
ddlR.DataSource = MySQL_Requettes.MyODBCDataset(QuerySQL, var_st.ODBCBase, var_st.ODBCServer, var_st.ODBCPwd, var_st.ODBCUser,"Regioni")

i valori var_st sono memorizzati nel global.asax che è cosi impostato

<%@ Application Classname="var_st" %>
<script language="VB" runat="server">
Public shared ODBCServer As String = "nome server"
Public shared ODBCUser As String = "nome utente"
Public shared ODBCPwd As String = "password"
Public shared name As String = "nome db"
Public shared ODBCBase As String = "nome db"
Public shared pagina as string
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Generato all'avvio dell'applicazione
End Sub

Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Generato all'apertura della sessione
End Sub

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
' Generato all'inizio di ogni richiesta
End Sub

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
' Generato durante il tentativo di autenticazione dell'utente
End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Generato in caso di errore
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Generato alla fine della sessione
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Generato alla chiusura dell'applicazione
End Sub
</script>


torno a ripetere che prima del passaggio nel nuovo server questo tipo di errori non si sono mai presentati ed inutile ribadire che il codice non è mai stato modificato


le dll sono correttamente posizionate nella cartella BIN

bho sono comunque convinto che ci sia qualche parametro del server da sistemare ma non sono molto esperto purtroppo

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
le ho provate un po' tutte ma davvero non riesco a capire cosa possa essere!

l'errore continua a ripresentarsi senza una ragione precisa
perchè mi basta fare f5 e la pagina funziona (oppure attendere qualche secondo)

e pensare che sul vecchio server tutto filava a meraviglia !

c'è qualche esperto che mi possa indicare qualche domanda precisa da porre ai sistemisti della web farm che ospita il sito ???

loro dicono che non sono programmatori ed io che sono programmatore non ho la più pallida idea della natura dell'errore (che ribadisco è legato al db mysql)

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari
Bene, siccome però negli anni ho maturato la convinzione che gli errori non accadono per caso e che, bene o male, ha sempre ragione lui (il pc  ), cerchiamo di analizzare con un po' sale in zucca ciò che accade.

Allora: tu dici che è colpa dell'accesso al DB. Un po' di domande sparse...

1) Cosa te lo fa pensare?
2) Il metodo RisolviID2 che aveva causato uno dei tanti errori, accede al DB?
3) Perchè non metti qualche riga di log per capire più o meno *cosa* va in errore dentro quel metodo (o altri che ti vanno in errore)?
4) Perchè non metti qualche Debug.Assert sugli oggetti che ti aspetti non debbano *mai* essere nulli?
5) Cos'è quella variabile shared chiamata "pagina"?
6) Usi variabili in Session che possono "svanire" a causa di un riciclo dell'app pool? se sì, verifichi che non siano null?

Cerca di rispondere per bene a queste domande, vedrai che dopo ne saprai di più di ciò che accade!

Ciao,
m.
ti ringrazio infinitamente per la risposta

allora vediamo di rispondere alle tue domande

1) ho la certezza che abbia a che fare con il db (o comunque con i metodi che accedono al db) perchè quando c'è il fatidico messaggio è sempre associato ad una funzione che recupera dei dati dal db

2)RisolviID2 recupera dei dati dal db

3)Impostando la direttiva debug a true su una pagina di prova ho ottenuto il seguente errore alla riga 169

System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto.
dr2 = MySQL_Requettes.MyODBCReader(strSQL2, var_st.ODBCBase, var_st.ODBCServer, var_st.ODBCPwd, var_st.ODBCUser)
Riga 169: WHILE dr2.Read()

molto strano anche perchè premendo F5 la pagina viene presentata senza problemi

4) questi Debug.Asser mi suonano nuovi :(

5) francamente ignoro l'origine di quella variabile ma sicuramente non lavora con il db che sia il caso di toglierla ?

6) nessuna variabile di sessione usata all'interno del sito

Aggiungo che le versioni di asp.net e del framework sono le seguenti
Versione di Microsoft .NET Framework: 1.1.4322.2407;
Versione di ASP.NET: 1.1.4322.2407
le stesse del vecchio server

e gli errori come sono arrivati poi spariscono davvero misterioso

GustoInRete La Rete del Gusto
Immobili360 Annunci Immobiliari

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.