2009-07-02 12 views
7

Tenemos una aplicación web antigua escrita en ASP clásico. No tenemos los recursos para reescribir la aplicación.Páginas web clásicas .ASP y .NET .aspx en una aplicación web ASP.NET

Sé que las páginas asp y aspx pueden coexistir en la misma aplicación web ASP.NET, pero parece que no se pueden compartir aplicaciones y probablemente variables de sesión en estos dos grupos de tipos de extensiones de página.

Tenía la esperanza de hacer un nuevo desarrollo en ASP.NET y, en teoría, convertir las páginas ASP clásicas a medida que avanzamos.

¿Hay alguna forma de compartir las variables de IIS en estos dos tipos de páginas web (además de pasar información utilizando los campos de cadena de consulta y formularios)?

Respuesta

9

No existe una solución straigthforwad para compartir variables de sesión entre ASP clásico y ASP.NET. Le recomendaría que mantenga sesiones en una base de datos, como se describe en este Microsoft Article. De esta forma, tanto ASP como ASP.NET pueden acceder a las variables de sesión.

+0

¿Alguien tiene algo de suerte trabajando con esta solución es un entorno x64 Win2K3? – Daryl

2

No es una forma directa. Podría considerar usar un back-end de base de datos compartida para su estado de sesión.

+0

Sé que hay una opción de configuración web para alternar su aplicación asp.net para usar una base de datos del servidor sql para almacenar el estado de la sesión. ¿Crees que eso funcionaría/tendría algún efecto en las páginas ASP.NET? – ChadD

+1

Por supuesto que afecta el estado de la sesión ASP.NET pero no las páginas ASP clásicas. Si vas a utilizar el estado de sesión basado en SQL Server incorporado de ASP.NET, deberás hacer que ASP lo use de forma manual. –

1

Puede crear una tabla simple en su base de datos para almacenar la información de "sesión". Tanto las páginas clásicas asp como .net pueden leer y escribir allí.

1

Las únicas formas de pasar estos datos serían valores GET/POST, cookies, archivo plano o almacenamiento de los datos en la base de datos. No hay nada "Built In" en el framework .Net para hacer esto.

1

He visto otra solución aparte de utilizar la base de datos como titular de la sesión compartida. Debo decir de antemano que usar la opción de base de datos es probablemente mucho mejor que esto. Pero ...

Puede crear una página ASP cuya única función es almacenar y recuperar desde el estado de la sesión ASP. Desde su página ASPX, puede realizar una búsqueda en su página ASP y devolver cualquier información de sesión en el encabezado, la cadena de consulta o incluso hacer un borrado de la carga restulante. Alternativamente, puede devolver una secuencia XML y crear un servicio web para personas pobres.

Además, puede obtener el estado de la sesión de ASP.NET haciendo lo contrario y creando una página .NET que acceda a la información de la sesión y la devuelva.

No es una buena idea y está plagada de problemas de seguridad. Lo he visto hecho es todo lo que digo. Probablemente sea mejor confiar en la base de datos y posiblemente pasar la ID de la sesión.

1

Bueno, acabo de enfrentar este problema, y ​​quiero decirte que solo pude resolverlo de una manera. La solución fue relativamente fácil y de hecho depende de su desarrollo original, en mi caso el flujo del sistema requiere iniciar sesión en una página default.aspx y después de validar el usuario/contraseña son correctos la página Init.asp se ejecuta y exactamente hay muchos Los archivos de sesión se crean y cargan (en realidad son el mínimo necesario) después de que la última instrucción redirecciona al usuario a mainmenu.aspx y forma esa página que llamamos archivos .aspx y .asp.

Esta solución funcionó para mí solo por las elecciones que realizó el desarrollador original cuando diseñó esta aplicación ASP 3.0 y, como se puede imaginar, no puedo recuperar esos valores en las páginas asp.net.

0

Acabo de pasar por esto. Mi solución fue envolverlo todo en la aplicación nodejs. Distribuyo tokens JWT de la API web .NET que tienen todas las reclamaciones de los usuarios codificadas en la carga útil. Este token se almacena en una cookie en el cliente.La cookie se enviará automáticamente en cada solicitud a su dominio, de modo que todo lo que necesita hacer es leer el valor de la cookie del encabezado y decodificar la carga (en ASP.NET y Classic ASP de forma independiente). Una vez que haya leído los contenidos, puede simplemente configurar las variables de sesión para que coincidan con las que estaban incrustadas en el token JWT.

Prefiero este método porque tiene 0 sincronización de base de datos necesaria y mueve su aplicación a OAuth2 openid y fuera de la sesión.

Cuestiones relacionadas