我正在使用webspeed开发一个web应用程序。我的代码只用cgi-wrappers编写。目前,我正在致力于管理wesession (所有案例)。现在的问题是,当我使用F5密钥刷新页面时,我的.p总是创建一个新的会话id。如何在.p中处理这种情况?如果代码是以.html文件编写的,而是完全以.p文件编写的,则不会出现此问题
谢谢。
发布于 2012-06-13 21:45:40
您需要一种更好的方法来标识会话。看看这里有没有什么有用的东西:http://freeframework.sourceforge.net/
发布于 2012-06-26 16:44:03
OpenEdge世界中的大多数人都编写自己的会话处理(包括我自己),尽管也有一些替代方案。
正如Tim提到的,自由框架已经存在了12年,但我不知道它是否还在积极开发中。
eScript框架是WebSpeed的一个很好的替代品,它允许您拆分业务逻辑和UI。您将意识到,使用cgi-wrappers是字符串处理的痛苦( 4GL字符串中的JavaScript代码使用引号和双引号是一场噩梦)。完整的框架(我相信有一个正在进行的使用完整框架的许可证)内置了完整的会话处理。
我相信在接下来的12个月里,eScript开发者将会发布一个全新的框架来替代eScript;要了解更多信息,请在Rule Six上注册eScript开发者的邮件列表(他的名字是Matt Verrinder,我和他没有任何关系)。
我自己使用的是基本的eScript web对象。这没有持续的许可(你只需要从Matt那里获得一些前期咨询),并让你廉价地享受业务逻辑/UI拆分的好处。当然,您仍然需要编写自己的会话处理。
对于OpenEdge开发人员来说,www.progrestalk.com是一个很好的资源:您在那里比在Stackoverflow上更有可能获得有用的答案。如果你在他们的论坛上搜索一下,你会发现大量关于会话处理的信息。
OpenEdge确实内置了会话处理功能。以下是Progresstalk上的thread的摘录:
在您需要在$DLC/properties/ubroker.porperties: useConnID=1中设置的信使上,您需要在webspeed代理的环境部分中设置SESSION_PATH。这应该指向您想要存储会话变量的目录。如果您已经这样做了,那么可以使用setSession("VarName","VarValue")来设置变量,使用getSession("Varname")来检索值。会话变量存储在一个名为ENCODE(SESSION:SERVER-CONNECTION-ID).tmp的文件中。
这种方法有它的缺点:值总是以字符的形式存储,文件的最大大小是32K (好吧,至少以前是这样)等等。但是,如果你要做的事情不是太复杂,那么这是一个很好的起点。人们可以通过开始实现自己的sessionManager来扩展这一点。
希望其中有一些有用的信息可以使用!
https://stackoverflow.com/questions/11014365
复制相似问题