Я пытаюсь выполнить простую загрузку многостраничной формы, используя System.Net.WebClient и Basic Authentication.
У меня были некоторые проблемы с этим, и я использовал 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;
}
}