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

时间:2010-09-10 13:32:20

标签: c# 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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

如果删除下载位,只保留上传会怎么样?

<强>更新

我知道使用非基本/摘要涉及往返,并且不能将keep-alive设置为false但不确定基本。