Come possiamo condividere le variabili Application e Session tra Asp e Asp.net?

0 Condivisioni

La convivenza tra le ASP tradizionali e ASP.NET non crea problemi sui server Microsoft dalla versione 2000.

E’ sufficiente abilitare il supporto per le ASP e installare il .NET Framework per poter usufruire di entrambe le tecnologie nelle proprie web application.

I problemi nascono nella necessità di dover usufruire, scambiare, leggere delle variabili Session e Application da entrambe le tecnologie.

Le variabili di entrambe le tecnologie utilizzano zone di memoria all’interno del loro ambiente di esecuzione e non hanno nulla in comune se non il nome,  infatti le variabili create da ASP saranno leggibili solo da questa tecnologia mentre quelle create da ASP.NET saranno visibili solo all’interno di questo ambiente. Come possiamo risolvere la cosa?

Il trucco, banale ma funzionale, c’è: è sufficiente richiedere da una pagina ASP.NET una pagina ASP per leggere il contenuto di una variabile Session e Application di quell’ambiente, e viceversa per poter leggere dalle ASP gli oggetti presente nelle pagine .NET.

asp - Come possiamo condividere le variabili Application e Session tra Asp e Asp.net?

Proviamo a leggere una variabile Application presente nell’ambiente ASP tradizionale da una pagina ASP.NET. Iniziamo a scrivere una pagina ASP contenente questo codice dandogli il nome “ReadAsp.asp”:

<%
on error resume next

tipo=request("type")

name=request("name")

if tipo="session" then

if Session(name)="" then

Response.Write("")

else

Response.Write (Session(name))

endif

endif


if tipo="application" then

ifApplication(name)="" then

Response.Write("")

else

Response.Write(Application(name))

endif

endif

Response.End()

%>

Questo codice, che è anche quello presente nell’esempio allegato a questo articoli, una volta richiamato controlla che tipo di variabile si vuole leggere e il suo nome, quindi la visualizza con un banale Response.Write. Per esempio, per leggere visualizzare il contenuto della variabile Application “esempio”, ci è sufficiente richiamare tale pagina con i parametri voluti:

<a href="http://localhost/ReadAsp.asp?type=Application&name=esempio">

http://localhost/ReadAsp.asp?type=Application&name=esempio</a>

Dalla nostra pagina ASP.NET è sufficiente utilizzare la tecnica denominata “URL grabbing” per richiamare quella pagina ASP e prenderne il contenuto. Se dalla nostra pagina ASP.NET vogliamo leggere il contenuto della variabile Application “esempio” utilizzata in ASP, possiamo scrivere:

HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://localhost/ReadAsp.Asp?type=Application&name=esempio");



HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();



StreamReader sr = new StreamReader(myResponse.GetResponseStream());



contenuto_variabile=sr.ReadToEnd();

Semplice, no? Per fare la stessa cosa ma da una pagina ASP, dobbiamo scrivere una pagina ASP.NET di nome “ReadNet.aspx” con questo contenuto:

<%@ Page language="c#" %>

<script runat=server>

void Page_Load() {

string name=Request["name"];

string tipo=Request["type"];

if (tipo=="session")

{

if (Session[name]==null) Response.Write ("");

else

Response.Write (Session[name].ToString());

}

if (tipo=="application")

{

if (Application[name]==null) Response.Write ("");

else

Response.Write (Application[name].ToString());
}

}

</script>

Quindi, per prendere il contenuto di una variabile Application utilizzata nell’ambiente .NET da una nostra pagina ASP:

Dim objXMLHTTP, StrURL


StrURL = "http://localhost/ReadNet.aspx?type=application&name=esempio"


Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")


objXMLHTTP.Open "GET", StrURL, false


StrCookie = Request.ServerVariables("HTTP_COOKIE") ' <- queste due righe verranno spiegate di seguito


objXMLHTTP.setRequestHeader "COOKIE", StrCookie  ' < ...

objXMLHTTP.Send


contenuto_application=CStr(objXMLHTTP.ResponseText)


Set xml = Nothing

Ciao Fab


0 Condivisioni

Fabrizio Cannatelli

Fondatore di Informarea.it, è un appassionato di informatica. Ha lavorato per molti anni come Analista Programmatore presso varie aziende utilizzando diversi linguaggi di sviluppo, oggi svolge un lavoro completamente diverso ma la voglia di comunicare e di condividere con il web i suoi studi e le sue curiosità lo hanno spinto a far nascere questo blog non solo per esprimere e mostrare la passione per questo mondo, ma anche per confrontarsi con nuove esperienze di sviluppo.

Fabrizio Cannatelli

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.