【问题标题】:.NET Webservice processing large file is having its thread aborted.NET Webservice 处理大文件的线程被中止
【发布时间】:2011-02-25 10:50:00
【问题描述】:

让您详细了解这个相当奇怪的问题。

我们有一个非常大的文本文件要处理,它有 780MB 并且可能会变得更大。 该文件的处理位于.NET WebService中,从Asp.Net网站客户端发送请求并开始处理,完成后返回网站。

在通过 FTP 读取文件并在大约一分钟内处理之前。 现在文件被移动到网络共享,但是当 .Net WebService 尝试处理文件时,线程被中止。

当我在我的机器上运行 .net webService 时,处理很好,并且完成(虽然很慢)。 当 .net WebService 放置在网络服务器(由 IIS 6.0 托管)上时,它会遇到线程中止异常。

有什么想法吗?

【问题讨论】:

    标签: c# asp.net web-services webserver file-processing


    【解决方案1】:

    如果您在自己的机器上以调试模式运行它,请求超时将被禁用。如果非调试,则启用(默认为 110 秒)。

    http://msdn.microsoft.com/en-us/library/e1f13641.aspx

    也就是说,让 Web 服务进行冗长的处理对于可扩展性而言通常不是一件好事。保持 Web [服务] 请求简短,并将长时间运行的批处理转移到单独的 [windows] 服务,以避免阻塞 IIS/asp.net 资源。

    【讨论】:

    • 是的,我知道,我会尝试在我们的应用服务器上执行此操作。这会让事情变得更好。
    • 只是为了澄清:我一开始打错了(服务器与服务)。让它在同一台服务器上运行不一定是问题,但是在 IIS/asp.net 下运行长时间运行的任务会锁定 IIS 资源。只需将其移动到带有文件系统观察器或计时器的单独进程(普通的独立 Windows 服务)以启动处理就可以为此类任务创造奇迹......
    【解决方案2】:

    可能是网络服务无权访问网络共享。您是否尝试将文件移动到本地驱动器?

    【讨论】:

      【解决方案3】:

      这很可能是执行超时。查看你的服务器配置,官方文档在这里:httpRuntime Element (ASP.NET Settings Schema)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多