【发布时间】:2012-03-07 04:12:16
【问题描述】:
我们正在开发一个通过 Internet 上传大文件的应用程序。 DotNetZip 压缩前的文件大小约为 18GB,压缩后约为 4GB。文件通过安全 ftp 从客户端机器传输到目标服务器机器没有任何问题。
然后客户端调用目标服务器主机托管的.Net网络服务将文件从ftp根目录复制到存储目录,计算文件哈希,调用DotNetZip解压文件。
当托管 Web 服务的客户端计算机和目标服务器计算机都在 Intranet 中时,Web 服务运行良好。
但是,当使用同一台客户端计算机,但使用另一台在 Internet 上托管 Web 服务的生产目标服务器计算机时,Web 服务在复制、散列和解压缩 4GB 文件时出现“线程被中止异常”。
两台服务器机器都是带有 SP2 的 Windows 2003 服务器,安装了相同的组件,具有相同的 IIS ver6.0,并且配置相同以使用 ASP .Net 2.0。我们将 web.config、machine.config、MetaBase.xml 从 Intranet 服务器机器复制到 Internet 服务器机器。
我们改变了: 1.客户端代码:代码7200000中的Web服务代理超时 2.服务器机器web.config文件: (1)。 (2)。 3.服务器机器machine.config文件: (1)。 4.服务器机器MetaBase.xml: (1)。 AspMaxRequestEntityAllowed="1073741824" 5.在IIS ver6,网站->服务选项卡->隔离模式,勾选“以IIS 5.0隔离模式运行WWW服务”。
我们目前对 Internet 上服务器机器上的问题的理解是,即使线程继续完成复制文件,.Net 在默认超时值下回收工作进程也会导致“线程被中止”异常。
如果我们的理解是正确的,那么为什么同样的超时配置可以在内网的服务器机器上工作呢?我们如何在 Internet 上的生产服务器机器上进行超时配置?
【问题讨论】:
标签: asp.net .net web-services iis-6 timeoutexception