通过ASP.Net webservice传输文件非常慢

时间:2011-01-04 10:36:33

标签: c# asp.net web-services wse3.0

我们在这里有一个遗留的WSE3 ASP.Net webservice,它定义了一个方法GetFileContent(string fileName)。它的作用是检查具有传递名称的文件的预定义路径,读取其内容,对其进行base64编码并将该编码后的内容作为响应发回。

不幸的是,整个过程需要(变化)年龄。我编写了一个控制台客户端应用程序,根据需要对性能进行基准测试 有时2.5Megs在12秒内传输,有时需要40个。另一个27Meg文件在16秒内完成,今天它花了> 1分钟。

我检查的其他事项:

  • CPU和交换性能不值得一提(在监控时,机器看起来很无聊)

  • 网络速度充足。

  • 在客户端发送请求后立即执行方法调用。

  • 对于大文件,读取和编码平均需要500毫秒,因此返回语句也会在请求后立即执行。

  • 另一个客户端(基于Java)甚至更慢,所以我认为可能是客户端问题。

有没有人知道接下来要去哪看这个讨厌的人呢?感觉像IIS一样麻烦,真的......

提前多多感谢...

2 个答案:

答案 0 :(得分:0)

我相信IIS没有问题。我怀疑,如果给出共享路径路径而不是实际路径,有时需要更多时间来解析IP。

答案 1 :(得分:0)

首先,只是为了确保:我希望你知道WSE已经过时了。

其次,WSE基于ASMX技术。这会产生大量请求的问题,因为它会在前往服务的路上复制传入数据四次或更多次。无论你的数据多大,假设它至少需要四倍的内存,那么服务甚至可以实现它。

解决方法是升级到WCF。