C# System.Net.WebClient“;无法将数据写入传输连接“;

C# System.Net.WebClient“;无法将数据写入传输连接“;,c#,webclient,C#,Webclient,我正在尝试使用System.Net.WebClient和基本身份验证执行简单的多部分表单上载 我在这方面遇到了一些问题,并且一直在使用Fiddler2调试我在服务中遇到的一些401错误 我得到了下面的代码,它在Fiddler2运行时成功,但在没有运行时失败,错误如下: “无法将数据写入传输连接:远程主机强制关闭了现有连接。” 代码如下: var wc = new MyWebClient(); var cc = new System.Net.CredentialCache();

我正在尝试使用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;
    }
}

在两次使用客户端时,您正在禁用保持活动。我相信这是你的问题

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

更新


我知道使用non-basic/digest需要往返,如果keep-alive设置为false,则无法工作,但无法确定basic。

Hi-Aliostad,下载位工作正常。无论下载是否存在,上传都不起作用。我只是想自动上传到一个简单的表单,有点尴尬的是,这么简单的东西让我受挫了。我认为这可能与预认证有关,并根据Rick Strahl的博客尝试了WebRequest@我知道上述因素,但它们似乎不是问题所在。但是,我会接受这个答案,因为我假设这与http://*.mysecurebackup.net/的类似WebDAV的功能有点特殊。这是我想要运行的东西,这样我就可以通过WebClient编程上传到我的JungleDisk。如果有人想访问详细信息,以便他们自己尝试/复制上述内容,我非常乐意提供,请给我写信。