Comment partager les variables d'application et de session entre Asp et Asp.net

La coexistence entre les ASP traditionnelle et ASP.NET ne crée plus de problèmes sur les serveurs Microsoft depuis la version 2000.

Il suffit d'activer la prise en charge ASP et d'installer le .NET Framework pour tirer parti des deux technologies dans vos applications Web.

Les problèmes se posent dans la nécessité d'utiliser, d'échanger, de lire les variables de session et d'application des deux technologies.

Comment partager les variables d'application et de session entre Asp et Asp.net

Comment partager les variables d'application et de session entre Asp et Asp.net



Les variables des deux technologies utilisent des zones mémoire au sein de leur environnement d'exécution et n'ont rien en commun si ce n'est le nom, en effet les variables créées par ASP ne seront lisibles que par cette technologie tandis que celles créées par ASP.NET ne seront visibles que dans cet environnement. Comment pouvons-nous régler ceci?

L'astuce, triviale mais fonctionnelle, est là : il suffit de demander une page ASP à une page ASP.NET pour lire le contenu d'une variable Session e Application de cet environnement, et inversement pour lire les objets présents dans les pages .NET depuis l'ASP.

Essayons de lire une variable Application présente dans l'environnement ASP traditionnel à partir d'une page ASP.NET. Commençons à écrire une page ASP contenant ce code en lui donnant le nom "ReadAsp.asp":

<%
en cas d'erreur reprendre suivant

tipo=demande(“type”)

nom=demande ("nom")

si tipo="session" alors

si Session(nom)="" alors

Réponse.Écrire(“”)

d'autre

Response.Write (Session(nom))

fin si

fin si

si tipo="application" alors

ifApplication(nom)="" alors

Réponse.Écrire(“”)

d'autre

Response.Write(Application(nom))

fin si

fin si

RĂ©ponse.Fin()

%>

Ce code, qui est aussi celui présent dans l'exemple joint à cet article, une fois appelé vérifie quel type de variable vous voulez lire et son nom, puis l'affiche avec un Response.Write trivial. Par exemple, pour lire et afficher le contenu de la variable Application "exemple", il suffit d'appeler cette page avec les paramètres souhaités :



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

Ă€ partir de notre page ASP.NET, il suffit d'utiliser la technique appelĂ©e « capture d'URL Â» pour appeler cette page ASP et rĂ©cupĂ©rer son contenu. Si depuis notre page ASP.NET on veut lire le contenu de la variable Application "exemple" utilisĂ©e en ASP, on peut Ă©crire :

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

HttpWebResponse maRĂ©ponse = (HttpWebResponse)maRequĂŞte.GetResponse();

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

content_variable = sr.ReadToEnd ();

Simple, n'est-ce pas ? Pour faire la même chose mais à partir d'une page ASP, nous devons écrire une page ASP.NET nommée "ReadNet.aspx" avec ce contenu :


<%@ Langue de la page=”c#” %>

void Page_Load() {

chaĂ®ne nom=RequĂŞte[« nom Â»] ;

string tipo=RequĂŞte[« type Â»] ;

si (tipo=="session")

{

if (Session[nom]==null) Response.Write (“”);

d'autre

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

}

si (tipo=="application")

{

if (Application[nom]==null) Response.Write (“”);

d'autre

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

}

Ainsi, pour récupérer le contenu d'une variable Application utilisée dans l'environnement .NET depuis notre page ASP :


Dim objXMLHTTP, StrURL

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

DĂ©finir objXMLHTTP = Server.CreateObject ("MSXML2.ServerXMLHTTP")

objXMLHTTP.Open "GET", StrURL, false

StrCookie = Request.ServerVariables(“HTTP_COOKIE”) ' <- quest due righe verranno spiegate di seguito

objXMLHTTP.setRequestHeader « COOKIE Â», StrCookie ' < …

objXMLHTTP.Envoyer

contenuto_application=CStr(objXMLHTTP.ResponseText)

DĂ©finir xml = Rien

ajouter un commentaire de Comment partager les variables d'application et de session entre Asp et Asp.net
Commentaire envoyé avec succès ! Nous l'examinerons dans les prochaines heures.