Impossibile visualizzare un messaggio di errore.Non è stato trovato l'...

giovedì 29 aprile 2010 - 17.03

carlitos081 Profilo | Newbie

Ciao a tutti. E' il mio primo posto in questo forum.
Spero di stare in quello giusto.
Allora ho un problema con un applicazione per windows mobile 6.1 professional. Uso visula studio 2005 in c#.
Il problema è il seguente:
La mia app scrive in un file di log le eccezioni. Ma quando vado a leggere tale file mi dice Impossibile visualizzare un messaggio di errore.Non è stato trovato l'assembli della risorsa facoltativo che lo contiene.
Come posso risolvere la cosa?
Anticipatamente grazie.

nico839 Profilo | Senior Member

ciao...anche a me è successo ed il problema è che mancavano dei file, ed ho risolto il tutto installando sul dispositivo
System_SR_it.cab (se non ricordo male) prima di installare il mio applicativo e tutto funzionava...

carlitos081 Profilo | Newbie

ciao.... Grazie infatti ho appena risolto così. In realtà ho reinstallato .Net Framework 2.0 sp2 e mi ha messo tutti i file CAB di System_SR_nazionalità.CAB che prima non avevo sul pc. Poi li ho istallati sul cel ed ora tutto funziona.
Grazie ancora

nico839 Profilo | Senior Member

Di nulla :-)

carlitos081 Profilo | Newbie

Ecco visto che ci sei approfitto della tua disponibilità....
Sai come fare per visuaklizzare il numero di riga di codice in visual studio 2005 e come si fa a visualizzarlo nell'errore sul dispositivo?(in java lo fa)
Grazie

nico839 Profilo | Senior Member

guarda,di applicativi per mobile ne ho avuto a che fare solo con uno e non è che abbia visto molto....
cmq dovrebbe essere come per gli applicativi Windows, se tu metti la parte del codice che potrebbe generare eccezione all'interno di un blocco try catch ti puoi far tornare un messaggio con il tipo di errore e altre informazioni ma riga del codice che lo genera non credo,al max chi l'ha causato...poi ripeto,di applicativi mobile ne so veramente poca,quasi nulla.

kataklisma Profilo | Senior Member

Ciao!

>....
>Sai come fare per visuaklizzare il numero di riga di codice in
>visual studio 2005 e come si fa a visualizzarlo nell'errore sul
>dispositivo?(in java lo fa)

Per visualizzare i numeri di riga nell'IDE basta semplicemente andare su :
Strumenti->Opzioni->Editor di testo->TuoLinguaggio (Ex c#) ->Flaggare l'opzione "numeri di riga".

Per quanto riguarda la gestione dell'errore posso indirizzarti su un mio post nel blog dove spiego in pochissime righe come ottenere il nome dell'assembly, della classe e del metodo che ha generato l'eccezzione ;)

Dagli un'occhiata!

http://blogs.dotnethell.it/SwDev/Trovare-il-nome-del-metodo-corrente.__16486.aspx

>Grazie


------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nico839 Profilo | Senior Member

Ad averlo saputo qualche mese fa mi sare i risparmiato un bel po di tempo e tanto nervoso in un progetto :-)
ma la linea esatta che genera l'eccezione non si riesce,vero?

kataklisma Profilo | Senior Member

Ciao!

>Ad averlo saputo qualche mese fa mi sare i risparmiato un bel
>po di tempo e tanto nervoso in un progetto :-)

Sono felice di averti aiutato ;)

>ma la linea esatta che genera l'eccezione non si riesce,vero?

Ascolta, la linea dell'eccezione è presente solo e soltanto nello Stacktrace, per prelevarla devi giocare un po con le stringhe, ecco un'esempio :

catch (Exception ex) { MessageBox.Show(ex.StackTrace.Substring(ex.StackTrace.IndexOf("line") + 5, 2)); }

Cosi ottieni i primi due caratteri dopo l'occorrenza della stringa "line", ovvero la riga di codice che ha generato l'eccezione.
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

nico839 Profilo | Senior Member

Fantastico!Non lo sai ma mi hai appena cambiato la vita!Grazie mille!

kataklisma Profilo | Senior Member

>Fantastico!Non lo sai ma mi hai appena cambiato la vita!Grazie
>mille!

Addirittura :) di niente ;)

Ciao!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

carlitos081 Profilo | Newbie

Grande!!!! Anche a me sta per cambiare la vita!!! Ma cosa significano il 5,2?
Grazie

kataklisma Profilo | Senior Member

>Grande!!!!
>Anche a me sta per cambiare la vita!!!

Ragazzi ma non è nulla di particolare eh! :)

> Ma cosa significano
>il 5,2?

Non fa altro che prendere l'indice dell'occorrenza della sottostringa "line" (es. 7, ovvero al settimo carattere è presente l'occorrenza "line") aggiunge all'indice 5 caratteri (l,i,n,e e lo spazio) e poi prende i due caratteri successivi a destra (la riga di errore)

>Grazie
Di niente :)

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

carlitos081 Profilo | Newbie

Non so perchè ma a me stampa "ys" presumo sia system. Devo provare a cambiare gl'indici

nico839 Profilo | Senior Member


>Ragazzi ma non è nulla di particolare eh! :)


certo,ma se avessi avuto sto suggerimento qualche mese fa x lo sviluppo di una dll avrei impiegato un decimo del tempo se non meno a capire perchè non funzionava su alcuni pc.

cmq probabilmente anche tu hai il msg scritto in italiano e qnd devi scrivere "riga" al posto di "line" e poi ho preso gli ultimi 3 di caratteri (avendo molto più di 100 righe di codice ma meno di 1000!)

kataklisma Profilo | Senior Member

>
>>Ragazzi ma non è nulla di particolare eh! :)
>
>
>certo,ma se avessi avuto sto suggerimento qualche mese fa x lo
>sviluppo di una dll avrei impiegato un decimo del tempo se non
>meno a capire perchè non funzionava su alcuni pc.

;)

>cmq probabilmente anche tu hai il msg scritto in italiano e qnd
>devi scrivere "riga" al posto di "line" e poi ho preso gli ultimi
>3 di caratteri (avendo molto più di 100 righe di codice ma meno
>di 1000!)

Si, sono accorgimenti che dovete effettuare voi a seconda del caso ;)

E' stato un piacere aiutarvi!

Ciao!

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

carlitos081 Profilo | Newbie

Buon giorno ragazzi...
Io non ho ancora risolto per quanto riguarda la riga di codice che mi genere l'errore...
Tra il try e catch ho messo e.StackTrace e come risultato ho il seguente errore:

in System.Net.HttpWebRequest.finishGetRequestStream()
in System.Net.HttpWebRequest.GetRequestStream()
in DeviceApplication2.Form1.DoConnect()
in DeviceApplication2.Form1.button3_Click()
in System.Windows.Forms.Control.OnClick()
in System.Windows.Forms.Button.OnClick()
in System.Windows.Forms.ButtonBase.WnProc()
in System.Windows.Forms.Control._InternalWnProc()
in Microsoft.AGL.Forms.EVL.EnterMainLoop()
in System.Windows.Forms.Application.Run()
in DeviceApplication2.Program.Main()


generato da un metodo che contiene il seguente codice:


// Create a request using a URL that can receive a post.
WebRequest request = WebRequest.Create(url);
// Set the Method property of the request to POST.
request.Method = "POST";
// Create POST data and convert it to a byte array.
string postData = "&deviceId= " + this.deviceId + "&rmc= " + rmc + "&gga= " + System.DateTime.Now;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();

Potete aiutarmi a capire in che punto viene generata l'eccezione!!!!!!
Meglio se m i dite cosa sbaglio nel metodo
In realta spedisce i dati ma al'improvviso mi si frizza l'applicazione sul palmare e poi stampa l'errore e si riprende.
Anticipatamente grazie

nico839 Profilo | Senior Member

ciao,anche se non ne so nulla ...ma se funziona poi si inchioda e si riprende,non potrebbe essere un problema di time out o di mole di dati troppo grande in un punto?

carlitos081 Profilo | Newbie

Grazie per la risposta.
Ma ho risolto ora posto il codice magari può tornare utile a qualcuno..
PS: io il numero di linea di codice che lancia l'eccezione ancora non sono riuscito a visualizzarlo.
Chi avesse un suggerimento è ben accetto.
Il codice:
public void sendHttpData()
{
string rmc = "Dati GPS RMC non disponibili";
string gga = "Dati GPS GGA non disponibili";

if (!this.gpsPosRMC.Equals("")) {
rmc = this.gpsPosRMC;
}

if (!this.gpsPosGGA.Equals("")) {
gga = this.gpsPosGGA;
}
try
{
string sURL = "http://10.64.32.99:8080/GpsByGprs/GpsDataReciver?deviceId="+this.deviceId+"&rmc="+rmc+"&gga="+gga;

WebRequest wrGETURL = WebRequest.Create(sURL);

Stream objStream = wrGETURL.GetResponse().GetResponseStream();
objStream.Close();
}
catch(Exception e)
{
this.WriteInFile("sendHttpData:::::" + e.Message);
}

}

Ciao.

nico839 Profilo | Senior Member

> try
> {

> }
> catch(Exception e)
> {
>this.WriteInFile("sendHttpData:::::" + e.Message);
> }
>
> }
>

in pratica se tu fai

try { } catch(Exception e) { this.WriteInFile("sendHttpData:::::" + e.Stacktrace); } }

ti dovrebbe ritornare una stringa con chi ha dato l'eccezione e la riga di codice dove è stata data.

carlitos081 Profilo | Newbie

Si ho provato anche e.Stacktrace mi da qualche info in + ma non la riga di codice!!!!
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5