Newsgroup: it.comp.www.asp
Titolo: asp.net session invalid cast exception

Ciao a tutti,
ho il seguente codice:
Dim myeConnection As Parallaksis.ePLMS.eConnection
myeConnection = Session("myeConnection")
se lo faccio eseguire nell'evento Page_Load
con il codebehind tutto funge,
se invece tolgo il codebehind, inserisco l'evento direttamente nel file
aspx mi ritorna il seguente errore:
System.InvalidCastException: Cast specificato non valido.
il codice nell'insieme è questo:
<%@ Import Namespace="Parallaksis.ePLMS"  %>
<%@ Import Namespace="System.io" %>
<%@ Import Namespace="System.data" %>
<%@ Import Namespace="CrystalDecisions.CrystalReports.Engine" %>
<%@ Import Namespace="CrystalDecisions.Shared" %>
<script language="VB" runat="server">
   Dim myeConnection As Parallaksis.ePLMS.eConnection
 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        myeConnection = Session("myeConnection")
end sub
</script>
Perchè ? C'è forse un uso diverso della Session usando il code behind
?

 ?
Late-binding,  da evitare:
http://blogs.aspitalia.com/az/post542/CSharpVSVBVS.aspx
Usa sempre il cast:
myeConnection = Session("myeConnection") As Parallaksis.ePLMS.eConnection
Ciao
-- 
AZ [Microsoft - .NET MVP]
Mia Home page: 
http://ciclismo.sitiasp.it
Asp.Net community: 
http://www.aspitalia.com
Il mio blog: 
http://blogs.aspitalia.com/az
 

 myeConnection = Session("myeConnection") As Parallaksis.ePLMS.eConnection
Ciao Andrea e grazie per aver risposto.
Ho provato a castare esplicitamente al tipo solo che anche utilizzando
myeConnection DirectCast(Session("myeConnection"),Parallaksis.ePLMS.eConnection)
Mi da lo stesso errore.
Ho provato ad usare anche la sintassi da te indicata, solo che mi da
errore
di compilazione.
Quello che non capisco è perchè funge con il code-behind mentre senza
no ?
Forse il quesito sarà un pò neiubbo ma non è molto che lavoro in
vb.net
 :-)

 DirectCast(Session("myeConnection"),Parallaksis.ePLMS.eConnection)
Hai provato con il ctype?
ctype(Session("myeConnection"),Parallaksis.ePLMS.eConnection)
Una vola verifica: sicuro che session contenga il nome di quell'oggetto?


 Una vola verifica: sicuro che session contenga il nome di quell'oggetto?
Altrochè.
In effetti questo è del codice che era situato in codeBehind e fungeva
bene.
Poi per ragioni progettuali l'ho dovuto spostare nel file .aspx e si
rifiuta di funzionare... Ho provato con il DirectCast, con il CType,
ho impostato il flage Strict="TRUE" nella direttiva page, l'ho spostato
dall'evento page_load ad una sub routine successiva ma niente da fare,
si rifiuta letteralmente di recuperare quest'oggetto.
La cosa incredibile è che se faccio Session("myeConnection").getType e
uso una proprietà per recuperare una caratteristica l'oggetto esiste
!!!
Considera che quest'oggetto fa parte di una libreria esterna scritta in
vb.net
.
Inoltre vorrei porti un'altra domanda.
Se nel mio progetto 
asp.net
 scrivo una nuova classe non associata a un
file aspx, dopodichè provo ad istanziarla in un file aspx senza
usare il codebehind la classe non viene vista, mi da tipo invalido.
E' giusto ?
Grazie delle risposte,
Vincenzo.


Ho Risolto...
Semplicemente è successo che nel bin privato del web era finita non so
come una versione precedente della libreria, che veniva caricata quindi
prima della versione contenuta nella GAC...
E' un mondo difficile :-)
Vincenzo.