5 messaggi dal 05 aprile 2007
Ciao a tutti, ho un problema con una applicazione che sto scrivendo in C#.
Sto usando il framework DayPilot Light per gestire degli eventi.
L'applicazione funziona correttamente se la lancio da IIS Express e SQL Server 2012.

Quando eseguo il deploy su IIS 7 o 8, avendo settato correttamente i parametri di connessione, autorizzazioni ed altro, mi ritrovo che in lettura non ha problemi, quando deve invece andare a leggere dati che dovrebbe aver appena scritto a DB, da il seguente Errore:
"Exception Details: System.NullReferenceException: Object reference not set to an instance of an object".

Son andato in debug a controllare se i dati venivano recuperati correttamente dal DB, i dati li recupera, quando torna i dati recuperati dal metodo, crea nullreference exception.

Non riesco a comprendere come il codice che gira correttamente su IIS Express non funzioni sull'IIS Full...

Settaggi, connessioni, autorizzazioni son uguali.

Se qualcuno ha qualche idea da propormi son ben felice di ascoltarlo.

Grazie anticipatamente a tutti.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
dovresti postare del codice, evidenziando la riga che causa la NullReferenceException.

L'errore si verifica puntualmente o di tanto in tanto?

ciao,
Moreno

Enjoy learning and just keep making
5 messaggi dal 05 aprile 2007
Ciao, l'errore si verifica quando mi collego al server IIS 7 o 8, alla creazione di un evento.

switch (action)
            {
                case "EventMove":
                    OnEventMove(EventMoveArgs.FromJson(parameters, new string[] {}, data));
                    break;
                case "EventResize":
                    OnEventResize(EventResizeArgs.FromJson(parameters, new string[] {}, data)); 
                    break;
                case "EventClick":
                    OnEventClick(EventClickArgs.FromJson(parameters, new string[] {}, data));
                    break;
                case "TimeRangeSelected":
                <b>    OnTimeRangeSelected(TimeRangeSelectedArgs.FromJson(parameters, data));</b>
                    break;
                case "Command":
                    OnCommand(CommandArgs.FromJson(parameters, data));
                    break;
                case "Init":
                    OnInit(new InitArgs());
                    break;
            }


Il null point reference me lo da al ritorno del metodo ontimerangeselected, di cui riporto il codice qui sotto:

public class TimeRangeSelectedArgs
    {
        public DateTime Start { get; private set; }
        public DateTime End { get; private set; }
        public JsonData Data { get; private set; }


        private TimeRangeSelectedArgs(JsonData parameters, JsonData data)
        {
            Start = (DateTime)parameters["start"];
            End = (DateTime)parameters["end"];
            Data = data;
        }

        internal static TimeRangeSelectedArgs FromJson(JsonData parameters, JsonData data)
        {
            return new TimeRangeSelectedArgs(parameters, data);
        }


    }


Alla creazione dell'evento, lui va a scrivere a db i dati di creazione di un evento, qua li recupera e istanzia l'oggetto evento da visualizzare in un calendario.

I dati li recupera (son andato in debug remoto e nella classe TimeRangeSelectedArgs son valorizzati), quando li ritorna, succede un qualcosa per cui va in null point reference, ma non riesco a capire il motivo.

Grazie mille per avermi risposto. Buona serata.
Modificato da roby4eldiablo il 17 aprile 2014 22.51 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
grazie per il codice. Mi sembra di capire che sia questa la riga di codice su cui Visual Studio si sofferma al verificarsi della NullReferenceException?
OnTimeRangeSelected(TimeRangeSelectedArgs.FromJson(parameters, data));


In questo caso il responsabile potrebbe essere OnTimeRangeSelected. Se si tratta di un evento che non ha ricevuto sottoscrittori, ecco spiegata l'eccezione: OnTimeRangeSelected varrebbe null (cosa che puoi verificare con il debugger remoto, ponendo un breakpoint su quella riga). Dunque dovresti cambiare quella riga così, per gestire l'eventualità che non vi siano sottoscrittori.
if (OnTimeRangeSelected != null) OnTimeRangeSelected(TimeRangeSelectedArgs.FromJson(parameters, data));


In alternativa, se lo preferisci, inizializza l'evento con un delegato vuoto, così non dovrai controllare che l'evento sia null.
public event TimeRangeSelectedEventHandler OnTimeRangeSelected = (object, args) => {};


Comunque questa situazione mi fa pensare che ci sia un problema sottostante, tipo un componente che ti aspettavi sottoscrivesse l'evento OnTimeRangeSelected e invece non lo sta facendo.

ciao,
Moreno
Modificato da BrightSoul il 18 aprile 2014 08.31 -

Enjoy learning and just keep making
5 messaggi dal 05 aprile 2007
Ciao, ho fatto come mi hai consigliato, mettendogli controlli per il null pointer exception ed effettivamente in un'altro metodo gli tornava un valore nullo. era relativo al fatto che su locale l'utenza era una, sul server era un'altra e mancava il corrispettivo a DB.

Grazie per le informazioni, buona giornata.

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.