MonoTouch: сбой WebConnection при возобновлении работы - PullRequest
1 голос
/ 30 декабря 2011

У меня произошел следующий сбой при использовании MonoTouch на iPad. Я тестировал на iOS 4.2+, и, похоже, это происходит на всех версиях iOS. Это очень трудно воспроизвести, поэтому у меня нет хорошего контрольного примера. Тем не менее, я получил множество сбоев при возобновлении приложения. Вы можете увидеть стек вызовов, полученных для этого сбоя ниже:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
   at System.Net.WebConnection.NextRead () [0x00000] in <filename unknown>:0
   at System.Net.WebConnectionStream.ReadAll () [0x00000] in <filename unknown>:0
   at System.Net.WebConnectionStream.CheckResponseInBuffer () [0x00000] in <filename unknown>:0
   at System.Net.WebConnection.ReadDone (IAsyncResult result) [0x00000] in <filename unknown>:0

У меня весь доступ к сети моего приложения обернут в блоки try / catch, и синхронные соединения происходят в отдельном потоке, поэтому этот стек вызовов поставил меня в тупик!

Если кто-нибудь видел это или знает причину, пожалуйста, дайте мне знать. Если у вас есть предложения по работе, я бы тоже хотел их услышать!

Вот пример стандартной операции потока; имейте в виду, что весь этот код упакован в try / catch:

HttpWebRequest r = new HttpWebRequest(Configuration.MasterRequestUri);
r.UserAgent = Configuration.UserAgent;
r.Method = "POST";
r.ContentType = "application/x-www-form-urlencoded";
r.ContentLength = bytes.Length;
r.Timeout = 10000;
r.ReadWriteTimeout = 10000;
r.CachePolicy = Configuration.CachePolicy;

r.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
r.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

Stream s = r.GetRequestStream();
s.Write(bytes, 0, bytes.Length);
s.Flush ();
s.Close ();

WebResponse wr = r.GetResponse();
s = wr.GetResponseStream();

using(StreamReader sr = new StreamReader(s))
{
    string responseString = sr.ReadToEnd();
    // Parses the string and what not
}

1 Ответ

0 голосов
/ 15 ноября 2018

Эта проблема исчезла сама по себе в более поздних версиях Xamarin (MonoTouch), поэтому я предполагаю, что это была ошибка в используемой в то время версии Mono.

...