WebClient使用大文件

时间:2015-05-08 11:34:50

标签: c# amazon-s3 webclient varnish

我在S3存储桶前面有一个Varnish服务器。 API将生成一个私有URL,并允许我通过Varnish服务器下载此存储桶的私有文件。

每当我直接从存储桶或Chrome中的Varnish服务器下载500MB文件时,一切正常。

当我将相同的逻辑移动到C#WebClient(代理设置为NULL并且只发送用户代理标头)时,直接从存储桶下载工作正常。当我将URL更改为Varnish-server时,事情开始崩溃......它将每次都以104.640KB的速度停止接收文件。

我得到一个IOException,Stream意外结束了。我已经尝试过DownloadData,DownloadFile和他们的Async同行。它永远不会完成下载。

我从.NET 2.0一直往返于4.5.1。有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

我得出结论Varnish用它的标题做了一些非常奇怪的事情。我最终设置了OpenResty(nginx + lua)并使用S3CMD在以某种方式请求URL时同步文件,并使用LUA将类似的系统设置为预先签名的URL。事实证明这与C#WebClient完美结合,最重要的是,我现在可以看到文件真的来自这个特定的服务器,如果Varnish缓存它就不是这种情况。