2009-02-19 39 views
0

摘要:下面详述的行为似乎表明,如果您在www.someplace.com上的应用程序通过SharedObject设置/检索数据,则会出现某种.sol碰撞,如果用户在someplace.com点击你的应用程序,然后稍后在someplace.com?name = value。当URL中存在查询字符串时,SharedObject(Flex 3.2)意外行为

任何人都可以确认或反驳吗?


我正在开发一个向用户提供登录页面的Flex Web应用程序。当用户登录时,他/她被提供与“组”相关联的“房间”。

我们最后参观房间/组的组合存储在共享对象 - 所以当给定用户登录时,他们都考虑到最近的房间中,他们是活跃的。

这工作正常,但我们也有一个自动登录系统,包含一个链接到应用程序的URL附带查询字符串上的用户点击。这些链接有两种类型。

1)的查询字符串包括用户名,的groupId和roomId

2)查询字符串只包括用户名

因为我们的工作速度快,只有少数开发商,自动登录系统建立在最后一个系统上。在自动登录过程中,将检查url,并且如果在查询字符串中找到groupId和roomId值,则将打开SharedObject,并使用参数值覆盖上次访问组/ room ID值。

工作正常,当应用程序被第二个类型的查询字符串(无groupId和roomId参数)命中时,应用程序将转到SharedObject以获取存储的房间和组ID值,如同它通常将。而这里的问题:

它回来与被任何最后的房间/组PARAM值分别为,没有什么最后的最后探访室/组值的值。

而且,如果给定的用户从未使用包含组和房间id值的查询字符串命中应用程序,则应用程序将从SharedObject获取空值。

它采取了一些周围挖掘,但它是什么样的情况是,第二组数据被存储/有望在共享对象如果查询字符串是出现在URL。在文本编辑器中名为.sol文件

的样子,我看到更多的翻译代码,和额外的组和房间值,一旦我击中包含查询字符串的URL的应用程序。

我在网上找不到任何关于此事的事,但这可能只是由于缺乏必要的搜索技巧。

有没有其他人遇到类似的东西?或者你知道如何解决这个问题?

我已经尝试将Security.exactSettings设置为false,已经真的希望这会起作用。

+0

你能否请包括更多的细节?示例代码?期望的效果v.s.实际?谢谢! – Brian 2009-02-24 22:14:27

回答

0

有一点要记住: - 它们将共享 - 但有延迟。如果您得到一个共享对象并对其进行更改,则更改将被延迟写入客户端.sol。

此外,我已经注意到,对于某些客户端(特别是Vista),在app状态早期访问ShraedObjects会引发异常。如果稍后再尝试一次,通常会成功。

+0

非常感谢Brian的回应。问题不在于访问SharedObject,而在于访问SharedObject的时间 - 正在检索数据。我想我应该改写我的问题。这个问题与数据写入方式似乎有所不同... – 2009-02-25 18:04:01

+0

...在URL中存在查询字符串时从.sol检索到。 我会尝试重写和简化。如果我能想出一种方法来包含代码而不会扩大这篇文章的大小,我也会这样做。格雷格,谢谢, – 2009-02-25 18:05:18

0

这听起来像是你在登录过程中正确写入共享对象,但是当用户在使用应用程序时更改房间/组时正确地将共享对象写入共享对象。

这就是为什么如果他们从来没有得到与房间/组参数的应用程序,值为null,以及为什么值不反映登录过程后发生的变化。

还要确保将值写入磁盘后保存到磁盘,您可以拨打mySharedObject.flush()