【问题标题】:sessions will be null when want to use download managers Like [Internet Download Manager] for download a file当想要使用下载管理器(如 [Internet 下载管理器])下载文件时,会话将为空
【发布时间】:2011-11-15 17:20:47
【问题描述】:

我在 page_load 中的代码如下:

    if (Session["User_ID"] != null)
    {
        GO FOR DOWNLOAD FILES
    }

User_ID 会话将在用户登录我的网站时创建。
用户登录后,当他想使用 Internet 下载管理器下载文件时(右键单击链接并选择 Dwonload With IDM)Session["User_ID"] 显示为空。
我使用 Session["User_ID"] 进行一些限制。
我该如何解决这个问题?

提前致谢

【问题讨论】:

    标签: c# asp.net file download session-variables


    【解决方案1】:

    不依赖会话来修复它。在重定向到下载 url 之前,将您需要的信息存储到缓存中,并键入随机字符串。然后沿着 url 传递随机字符串。在下载页面上使用 url 字符串来加载缓存的数据。无需会话。

    【讨论】:

      【解决方案2】:

      你不能是下载管理器软件有问题,而不是你的代码。它只是简单地连接到您的 url,而不传递 asp.net 用于维护会话状态的相关 cookie,因此服务器仅将其视为新的未经身份验证的连接。就好像用户在 Firefox 中登录然后将下载 url 复制并粘贴到 chrome 中一样。

      【讨论】:

      • 感谢您的回答,那么对于限制我能做些什么呢?还有其他方法吗?
      • 请您解释一下这句话 -> 就好像用户在 Firefox 中登录然后将下载 url 复制并粘贴到 chrome 中一样。 -> 你是什么意思?将 url 从 firefox 复制并粘贴到 chrome 并不能帮助该用户在未经许可的情况下下载文件(他应该先登录)!
      • 您可以允许未经身份验证的用户下载(即删除检查)或接受某些糟糕的第三方软件不适用于您的网站以及数以千计的其他网站,即这不是您的问题。
      • 用户在 Firefox 中登录,他们已通过身份验证,他们将 url 复制粘贴到 chrome 中(他们尚未登录的地方),请求以 unauthenticated 的形式通过。这与下载管理器相同,即它像不同的浏览器一样工作。
      • 如何阻止并识别第三方软件?
      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多