2010-09-10 68 views
0

我正尝试使用System.Net.WebClient和基本身份验证进行纯多部分表单上载。System.Net.WebClient“无法将数据写入传输连接”

我遇到了一些麻烦,并且一直在使用Fiddler2来调试我一直在服务中遇到的一些401错误。

我已经得出了下面的代码,而Fiddler2正在运行的成功,但是当它不,并出现以下错误失败:

“无法将数据写入传输连接:一个现有的连接被强制由远程主机关闭。“

代码如下:

var wc = new MyWebClient(); 
    var cc = new System.Net.CredentialCache(); 
    cc.Add(new Uri(uri), "Basic", new System.Net.NetworkCredential(user, pass)); 
    wc.Credentials = cc; 
    System.Net.ServicePointManager.Expect100Continue = false; 
    wc.UploadFile(uri + folder, file); 
    wc.DownloadString(uri + folder).Dump(); 
    return; 

class MyWebClient : System.Net.WebClient 
{ 
    protected override System.Net.WebRequest GetWebRequest(Uri address) 
    { 
     System.Net.WebRequest request = base.GetWebRequest(address); 
     if (request is System.Net.HttpWebRequest) 
     { 
      (request as System.Net.HttpWebRequest).KeepAlive = false; 
     } 
     return request; 
    } 
} 

回答

0

您要停用保持活跃,而你正在使用的客户端的两倍。我相信这是你的问题。

如果您删除下载位,只保留上传会发生什么?

UPDATE

我知道,使用非基本/摘要涉及往返,不会与保活设置为false,但不知道基本的工作。

+0

嗨Aliostad,下载位工作正常。无论下载是否存在,上传都不起作用。我只是试图将上传自动化成一个简单的表单,稍微让我感到沮丧的是,这样简单的事情让我感到困惑。认为它可能与PreAuthenticate有关,并且已经根据Rick Strahl的博客尝试了WebRequest @ http://www.west-wind.com/weblog/posts/243915.aspx – Aaron 2010-09-11 09:00:59

+0

我知道上述因素,似乎是问题。但是,我会接受这个答案,因为我认为这是类似于http://*.mysecurebackup.net/的WebDAV类功能的东西。这是我想要运行的东西,所以我可以通过WebClient以编程方式上传到我的JungleDisk。如果任何人想要访问细节,以便他们可以尝试/复制上述自己,我非常乐意提供它们,只需要给我一条线。 – Aaron 2010-10-30 07:35:51

相关问题