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
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