在一个ASP.NET Web应用程序中的经典.ASP和.NET .aspx网页

在一个ASP.NET Web应用程序中的经典.ASP和.NET .aspx网页

问题描述:

我们有一个用传统ASP编写的旧Web应用程序。我们没有资源来重写应用程序。在一个ASP.NET Web应用程序中的经典.ASP和.NET .aspx网页

我知道,ASP和ASPX页面可以在同一个ASP.NET Web应用程序共存,但它似乎那些你无法在这两个群体页扩展类型的共享应用,可能Session变量。

我希望能够在ASP.NET中进行新的开发,并且在理论上将经典ASP页面转换为我们所用的页面。

是否有要共享这两种类型的网页IIS变量的方式(使用查询字符串中传递的信息放在一边,形成领域)?

在经典ASP和ASP.NET之间共享会话变量没有straigthforwad解决方案。我建议你将会话持久化到数据库中,就像这个Microsoft Article中描述的那样。这样ASP和ASP.NET都可以访问会话变量。

不是一个直接的方式。您可以考虑为您的会话状态使用共享数据库后端。

+0

我知道有一个web配置选项来切换你的asp.net应用程序使用sql server数据库来存储会话状态。你认为这对ASP.NET页面有效吗? – ChadD 2009-07-02 18:42:36

+1

当然,它确实会影响ASP.NET会话状态,但不会影响传统的ASP页面。如果您打算使用ASP.NET内置的基于SQL Server的会话状态,则必须手动使用ASP。 – 2009-07-02 18:44:50

你可以在你的数据库存储在“会话”信息创建一个简单的表,无论是传统的ASP和.NET的网页能读会写在那里。

传递该数据的唯一途径是GET/POST值,饼干,平面文件,或将数据存储到数据库中。没有什么“内置”.Net框架来做到这一点。

我已经看到除了使用数据库作为共享会话持有者之外的另一个解决方案。我应该事先说出使用数据库选项可能比这更好。但是...

您可以创建一个ASP页面,其唯一功能是存储到ASP会话状态中并从中检索。从你的ASPX页面你可以创建一个web请求到你的ASP页面,并返回头部中的任何会话信息,查询字符串,甚至可以对restulant加载进行一些修改。或者,您可以返回一个XML流并制作一个穷人的Web服务。

我另外,你可以通过做相反,使访问会话信息,并返回它的.NET页从ASP.NET获得会话状态。

这不是一个好主意,充满了安全问题。我所看到的是我所说的。这可能是最好的依靠数据库,并可能传递会话ID。

嗯,我刚刚面对这个问题,并想告诉你,只要能够以一种方式解决它。该解决方案相对容易,实际上取决于您的原始开发,在我的情况下,系统流程需要在default.aspx页面上登录,并且在验证用户/密码正确之后,Init.asp页面才会执行并且正好有很多会话变量被创建和加载(实际上只是最低需要),最后一条指令将用户重定向到mainmenu.aspx并形成该页面,我们称之为.aspx和.asp文件。

该解决方案为我工作,只是因为选举的时候设计了这个ASP 3.0应用程序的原始开发制造,正如你可以想像我不能检索在asp.net页面的值。

我刚刚经历过这个。我的解决方案是将它全部包装在nodejs应用程序中。我从.NET Web API中释放JWT令牌,其中所有用户声明都在有效负载中进行了编码。该令牌存储在客户端的cookie中。Cookie将自动提交给您的域的每个请求,所以您只需从头中读取cookie值并解码有效内容(独立于ASP.NET和Classic ASP)。一旦阅读了内容,您可以简单地设置会话变量以匹配嵌入在JWT令牌中的会话变量。

我更喜欢这种方法,因为它有必要的数据库同步0,并将您的应用程序移至OAuth2 openid并远离会话。