WebClient.UploadFile()在某些二进制文件上抛出异常

时间:2009-09-11 09:24:13

标签: c# asp.net web-services upload

我正在使用WebClient.UploadFile()方法将文件发布到服务进行处理。该文件包含一个XML文档,其中包含压缩的b64编码内容元素。对于某些文件(当前为1),UploadFile会抛出异常,指示底层连接已关闭。套接字级别的最内层异常给出消息“远程主机强行关闭现有连接”。

问题:

  1. 有没有人遇到过同样的问题?
  2. 为什么它会为某些文件抛出异常,而不是为所有文件抛出异常?
  3. 我应该为包含二进制内容的文件设置一些附加参数吗?
  4. 有解决方法吗?
  5. 此功能在VPN情况下运行良好,但显然我们希望在标准Internet环境中使用它。

    谢谢,Rine

2 个答案:

答案 0 :(得分:0)

听起来像防火墙或其他安全软件位于您和服务器之间可能会拒绝该请求作为潜在攻击。在防火墙拒绝包含特定文件扩展名的请求之前,我遇到过这种情况 - 即使该文件扩展名是在查询字符串参数中编码的!

如果我是你,我会接受有问题的文件并开始修剪XML。您可能能够找到触发该问题的特定XML块。一旦确定了罪魁祸首,就可以弄清楚如何解决问题(例如,在发送文件之前使用Unicode值而不是文本编码这些字符)。但是,如果对文件的任何更改导致问题消失(这不是由特定的令人担忧的文本引起的),那么我很难过。

答案 1 :(得分:0)

任何可能是大小问题,有问题的文件超过一定的大小而且所有工作文件都低于它?当服务器达到最大接受请求大小时关闭连接的服务器与您的症状相匹配。你提到它在VPN中工作,所以它无疑是一个延伸,但VPN案例可能是一个不同的服务器配置不同(或者由于某些其他原因,最大请求是不同的)。

是否存在非WebClient方法,用于将文件从同一台计算机上传到同一服务,如果是,它们是否有效?