0

我正在使用 webspeed 开发一个 Web 应用程序。我的代码仅用 cgi-wrappers 编写。目前我正在管理wesession(所有案例)。现在的问题是,当我使用 F5 键刷新页面时,我的 .p 总是在创建一个新的会话 ID。我该如何处理.p中的这种情况?当代码写在 .html 文件中,但是当代码完全写在 .p 文件中时,这个问题不会出现

谢谢。

4

2 回答 2

0

OpenEdge 世界中的大多数人都编写自己的会话处理程序(包括我自己),尽管有一些替代方案。

正如 Tim 提到的,有一个 Free Framework,它已经存在 12 年了,但我不知道它是否仍在积极开发中。

eScript框架是 WebSpeed的绝佳替代品,允许您拆分业务逻辑和 UI。您将意识到使用 cgi-wrappers 对您的字符串处理来说是一种痛苦(4GL 字符串中 JavaScript 代码的引号和双引号是一场噩梦)。完整的框架(我相信使用完整框架的持续许可)内置了完整的会话处理。

我相信在接下来的 12 个月内,eScript 开发人员将会发布一个全新的框架来替代 eScript;欲了解更多信息,请在规则六注册 eScript 开发人员的邮件列表(他的名字是 Matt Verrinder,我与他没有任何关系)。

我自己使用基本的 eScript Web 对象。这没有持续的许可(您只需要从 Matt 那里获得一些前期咨询),并以便宜的方式为您提供业务逻辑/UI 拆分的好处。当然,您仍然必须编写自己的会话处理。

对于 OpenEdge 开发人员来说,一个很好的资源是www.progrestalk.com:与 Stackoverflow 相比,您更有可能在那里获得有用的答案。如果您在他们的论坛上进行搜索,您会发现大量有关会话处理的信息。

OpenEdge 确实内置了会话处理。这是Progresstalk 上的一个线程的摘录:

在信使上,您需要在 webspeed 代理的环境部分中设置 $DLC/properties/ubroker.porperties:useConnID=1,您需要设置 SESSION_PATH。这应该指向您想要存储会话变量的目录。如果你已经这样做了,那么你可以使用 setSession("VarName","VarValue") 来设置变量和 getSession("Varname") 来检索值。会话变量存储在文件名 ENCODE(SESSION:SERVER-CONNECTION-ID).tmp 中。

这种方法有其缺陷,例如:值始终存储为字符,文件的最大大小为 32K(至少它曾经是)等等。但如果你要做的事情不是太复杂,那么它是一个很好的起点。人们总是可以通过开始实现自己的 sessionManager 来扩展它。

希望里面有一些有用的信息你可以使用!

于 2012-06-26T08:44:03.033 回答
0

您需要一种更好的方法来识别会话。看看这里,看看有没有什么有用的:http: //freeframework.sourceforge.net/

于 2012-06-13T13:45:39.517 回答