можно создать дополнительный метод :
public static class DictionaryExtensions
{
public static void RemoveAll(this IDictionary dict,
Func predicate)
{
var keys = dict.Keys.Where(k => predicate(dict[k])).ToList();
foreach (var key in keys)
{
dict.Remove(key);
}
}
}
...
dictionary.RemoveAll(x => x.Member == foo);
Некоторое время назад я столкнулся с тем же исключением, и я помню, что это происходит в некоторых случаях из-за ошибки в .NET. Вы можете обойти это, установив для Timeout и ReadWriteTimeout запроса более высокие значения или установив KeepAlive на false.
Это будет только обходной путь, поэтому я предлагаю вам попытаться найти реальную основную причину, прежде чем что-либо делать .
Я постараюсь найти несколько веб-ссылок, а пока посмотрите Загрузка больших файлов (WebException: соединение было неожиданно закрыто)
Если вы используете .NET 2.0 или выше, вы можете включить трассировку сети и посмотреть, что на самом деле происходит по сети. Таким образом вы сможете получить дополнительную информацию об этом конкретном исключении.
См. Дополнительную информацию по следующей ссылке, http://msdn.microsoft.com/en-us/library/hyb3xww8%28VS.80%29.aspx
Похоже на возможные проблемы:
Вы никогда не назначаете созданный прокси-сервер своему HttpWebRequest
WebProxy ** proxy ** = new WebProxy ("http: // proxy: 80 /", правда);
HttpWebRequest webRequest = WebRequest.Create (LOGIN_URL) как HttpWebRequest;
//proxy.Credentials = new NetworkCredential ("myusername", "mypassword", "domain");
// webRequest.Proxy = proxy;
webRequest.Proxy = ** WebRequest.DefaultWebProxy **;
Вы должны назначить это так:
WebProxy proxy = new WebProxy ("http: // proxy: 80 /", true);
HttpWebRequest webRequest = WebRequest.Create (LOGIN_URL) как HttpWebRequest;
webRequest.Proxy = прокси;
(обратите внимание на разницу в последней строке)
Вы используете порт 80 на вашем прокси. Уверены, что это правильно? Многие прокси-серверы используют порт 8080.
myHttpWebRequest.Credentials = CredentialCache.DefaultCredentials;
это решение