【问题标题】:Same page on two browser and different session - ASHX两个浏览器上的同一页面和不同的会话 - ASHX
【发布时间】:2012-04-05 19:47:43
【问题描述】:

我有 ASHX,用户在其中上传产品图片,我将上传的文件名保存在 session["up_pro_image"] 中。在提交时,我读取会话值并使用文件进行操作。但是如果他打开了两个页面并在两个页面上都添加了产品怎么办,我会从会话中丢失一个文件名。如何解决这个问题?

【问题讨论】:

    标签: asp.net session ashx


    【解决方案1】:

    您可以将事件写入数据库,而不是将其保存到会话中。每个文件都可以有一个名为“IsProcessed”的标志。然后,您的代码可以在数据库中查询所有未处理的文件,对其进行处理,然后将标志设置回数据库中。

    【讨论】:

    • 在我看来,几乎是一样的。如果他打开了两个页面,按上传会收到两个文件,但我不知道哪个文件用于切换页面(页面作为浏览器选项卡)。
    • 几乎一样,只是您没有丢失任何数据点!难道你不能调整你的应用程序,让它不在乎哪个选项卡提交文件,只要它们在同一个会话中?
    • 我不确定你是否明白我的意思,但现在我会解释更多。假设您使用我的用户登录,而我也使用我的用户登录。假设您单击“AddProduct.aspx”,我也单击该页面。现在你上传文件,但我也上传文件。当您单击保存时,哪个文件适合您?我知道这可以通过将 ASHX 响应保存到隐藏字段然后检查具有该 GUID 的文件是否存在等来完成......但还有更安全的方法吗?
    • 抛开使用相同凭据登录两个用户的安全问题,为每个文件上传会话添加一个 GUID 标识符听起来是一个不错的答案。您最初的问题提到了两个选项卡,而不是两个用户,但这个解决方案可以解决这两个用例。
    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 2017-09-30
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    • 2023-04-11
    • 2013-07-07
    相关资源
    最近更新 更多