【问题标题】:I can't open other pages on my website while uploading?上传时无法打开我网站上的其他页面?
【发布时间】:2012-01-27 06:08:26
【问题描述】:

我的网站在 IIS7 上运行,所有脚本都使用 ASP Classic 编码。我最近注意到在我的网站上上传文件时,我无法打开任何其他页面。

这是场景: 我开始使用网络表单上传视频文件,在上传文件时,我尝试在同一网站上打开另一个页面,但除非上传完全完成,否则它不会接收和加载单个字节!

有什么想法吗?

【问题讨论】:

    标签: iis file-upload asp-classic iis-6


    【解决方案1】:

    Session 对象是造成这种情况的原因。 Session 对象属于一个 STA(单线程单元)。当属于特定会话的请求到达时,处理该请求的工作线程将进入会话对象所属的单元。然而,它只能这样做如果该单元中已经没有另一个线程(因为 STA 一次只能容纳一个线程)。

    因此,您的浏览器开始上传文件,正在执行与该浏览器会话相关联的 ASP 请求。处理该上传请求的工作线程进入会话对象所属的单元。现在您正在尝试加载另一个页面,而另一个请求仍在进行中。当第二个请求到达时,ASP 会发现它无法让另一个工作线程进入相同的会话单元,因为它已经被第一个请求占用了。因此,ASP 会将第二个请求放入队列中,等待第一个请求腾出公寓。

    避免这种情况的唯一方法是关闭 ASP 会话。这将允许 ASP 同时处理来自同一浏览器的请求。然而,严重的缺点是您将不再需要使用 Session 对象。您必须自己实现任何服务器端会话管理,包括处理并发问题,例如尝试同时访问任何会话数据的两个请求。

    【讨论】:

    • 谢谢安东尼。非常有用的信息。我一直在对我的 ASP Classic 网站进行很多调整,但在 ASP 技术上运行我的大型网站变得越来越难,因为它不再由 MS 开发。所以,我认为最好一劳永逸地转换技术。你有什么建议?
    【解决方案2】:

    只有您的网站无法打开还是其他网站也无法打开?

    如果是后者,请为您的互联网购买更好的套餐。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-14
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 2018-06-19
      • 1970-01-01
      • 2011-08-25
      相关资源
      最近更新 更多