公司最近的网站项目需要在页面中嵌入flash,操作flash后返回数据,我用HttpHandler接收以后保存进数据库。但是里面碰到个问题令我很头疼,首先flash是同时发送几组数据过来,我简单点说吧,假如要发送ABCD共4组数据过来,但这些数据是有关联的,例如A这组数据为主数据,另外BCD为副数据,所以BCD这三组数据就需要A这组数据的ID来做为ParentID保存,但A的ID需要添加进数据库以后才能生成(自动字段),所以我就想先弄一个名为ParentID的Cookie先设值为零,然后在A添加完成以后将A的ID保存进去,当BCD的数据添加的时候再读取出来,但我发现在保存BCD的时候这个Cookie值始终为零,改成使用Session也一样,就算我使用lock将方法锁定为一个一个执行也还是为零,虽然改用使用文件保存可行,但我就想求问各位高手能不能简单点,就使用Cookie或Session达到我想要的效果?HttpHanderflashcookiesession

解决方案 »

  1.   

    ABCD同时发送
    先插入A 返回插入生成的ID
    在将ID给BCD 在插入ABCD不同时1.等ABCD 都过来在做一次SaveDB2.A 过来SaveDB 记录生成的ID ,然后BCD 在插入呗,你既然能在HttpHandler能接收到ABCD 还有什么是不可以的
      

  2.   

    大致猜测,这个Flash的操作机制不是你设计的。那么我建议你跟它的设计者讨论一下,看看设计者的设计中如何标识ABCD属于相同一组数据,会不会产生歧义。正常情况下,ABCD四个消息中使用同一个GUID数据作为Id来表示主数据的ID,这是很自然和方便的做法。如果真如你所说是同时发送消息的,那么服务器接收端不一定保证A在BCD之前收到消息,A很可能在C消息到达之后才到达。此时你的设计逻辑根本就不成立,你再怎么觉得熟悉(所谓自动字段),也应该放弃这种程序设计。如果在设计Flash端与服务器的通讯协议时不会造成数据立即上的错误,那么服务器端处理ABCD不要做任何修改,现保存到数据库里,因为数据本身就已经可以关联了,你用不着在画蛇添足地去更改ABCD的主数据编号。
      

  3.   

    你说的对,A数据确实不一定在BCD之前到达,关于这点我用别的方法处理了,只是这个项目原来是外包给别人做的,flash也是,现在要改数据库架构不大现实,所以就想知道已经成这样的情况下有没有办法补救。
      

  4.   

    这个项目原来都是外包给别我做的,Flash也是,而且那SB公司只给网站的源文件,不给Flash的源文件,所以我没法改动Flash。
      

  5.   

    可不可以在所有数据接收到之后再做之后的操作?比如建一个Dictionary<string,Object>变量,在收到数据后存入这个Dictionary变量,假设:_dic["A"] = data;存入后再判断Keys的Count是否为4个,若是,则执行你需要的处理。不是,则等待下次数据的传入。
      

  6.   

    我想问如果是很多人同时提交的时候你如何判断哪些BCD属于哪些A?