7
votes

Les pages Web classiques .asp et .net .aspx Web dans une application Web ASP.NET

Nous avons une ancienne application Web écrite en ASP classique. Nous n'avons pas les ressources nécessaires pour réécrire l'application.

Je sais que les pages ASP et ASPX peuvent coexister dans la même application Web ASP.NET, mais elles apparaissent comme celles que vous ne pouvez pas partager des applications et probablement des variables de session sur ces deux groupes de types d'extension de page.

J'espérais faire de nouveaux développements dans ASP.NET et en théorie, convertir les pages ASP classiques au fur et à mesure que nous allons.

Y a-t-il un moyen de partager des variables IIS sur ces deux types de pages Web (en dehors des informations de passage à l'aide des champs de la chaîne de requête et des formulaires)?


0 commentaires

7 Réponses :


2
votes

Pas une manière directe. Vous pouvez envisager d'utiliser un backend de base de données partagé pour votre état de session.


2 commentaires

Je sais qu'il existe une option de configuration Web pour basculer votre application ASP.NET pour utiliser une base de données SQL Server pour stocker l'état de la session. Pensez-vous que cela fonctionnerait / avoir un effet sur les pages ASP.NET?


Bien sûr, il affecte l'état de la session ASP.NET mais pas les pages ASP classiques. Si vous allez utiliser l'état de session SQL Server intégré d'ASP.NET, vous devrez utiliser ASP à utiliser manuellement.



1
votes

Vous pouvez créer une table simple dans votre DB pour stocker l'info «Session» dans. Les pages classiques ASP et les pages .NET pourraient lire et écrire là-bas.


0 commentaires

1
votes

Les seules façons de transmettre ces données seraient / publier des valeurs, des cookies, un fichier plat ou de stocker les données à la base de données. Il n'y a rien "intégré" à la framework .NET pour le faire.


0 commentaires

9
votes

Il n'y a pas de solution Straigthorwad pour le partage de variables de session entre ASP classique et ASP.NET. Je vous recommanderais de persister les sessions dans une base de données, comme celle-ci est décrite dans ce Article Microsoft . De cette façon, ASP et ASP.NET peuvent accéder à des variables de session.


1 commentaires

Quelqu'un a-t-il de la chance de travailler avec cette solution est un environnement X64 Win2K3?



1
votes

J'ai vu une autre solution à l'écart de l'utilisation de la base de données comme titulaire de session partagé. Je devrais dire à l'avance que l'option de base de données est probablement beaucoup mieux que cela. Mais ...

Vous pouvez créer une page ASP dont la seule fonction est de stocker et de récupérer de l'état de la session ASP. À partir de votre page ASPX, vous pouvez créer une page WebRequest sur votre page ASP et renvoyer toutes les informations de session dans l'en-tête, le testching, ou même faire un grattage de la charge restoleuse. Sinon, vous pouvez retourner un flux XML et faire un service Web d'un pauvre homme.

i Ajout, vous pouvez obtenir l'état de la session d'ASP.NET en faisant le contraire et en faisant une page .NET qui accède à la session info et le renvoie.

Ce n'est pas une bonne idée et des problèmes de sécurité. Je l'ai vu fait est tout ce que je dis. Il est probablement probablement préférable de compter sur la base de données et éventuellement passer de la session id autour.


0 commentaires

1
votes

Eh bien, je viens de faire face à ce problème et je veux vous dire que cela a été capable de le résoudre d'une manière d'une manière. La solution était relativement facile et dépend en fait de votre développement d'origine, dans mon cas, le flux système nécessite de vous connecter dans une page par défaut.aspx et après la validation de l'utilisateur / mot de passe est correcte, la page init.asp est exécutée et exactement là plusieurs Les vars de session sont créés et chargés (ne sont effectivement que le minimum requis) après que la dernière instruction redirige l'utilisateur à MAINGEMENU.ASPX et former cette page que nous appelons .aspx et .aspect.

Cette solution a fonctionné pour moi juste à cause de l'élection du développeur original fabriqué lors de la conception de cette application ASP 3.0 et que vous pouvez imaginer, je ne peux pas récupérer ces valeurs dans les pages ASP.NET.


0 commentaires

0
votes

Je viens de passer cela. Ma solution était de tout emballer dans une application Nodejs. Je dégage des jetons JWT de .NET Web API qui ont toutes les revendications des utilisateurs codées dans la charge utile. Ce jeton est stocké dans un cookie sur le client. Le cookie sera automatiquement soumis sur chaque demande à votre domaine afin que tout ce que vous avez à faire est de lire la valeur de cookie de l'en-tête et de décoder la charge utile (dans ASP.NET et ASP classique indépendamment). Une fois que vous avez lu le contenu, vous pouvez simplement définir les variables de session pour correspondre à celles qui étaient intégrées dans le jeton JWT.

Je préfère cette méthode car il dispose de 0 synchronisation de base de données nécessaire et déplace votre application à Oauth2 OpenID et à l'abri de la session.


0 commentaires