Intermittently,Encoding.ASCII.GetString調用失敗,出現一個異常,該異常將所有catch塊凍結並凍結應用程序。MonoDroid:Encoding.ASCII.GetString失敗
private string ExecuteRequest(Uri url, KeyValuePair<string, string>[] postItems = null)
{
var data = new byte[0];
var response = new byte[0];
using (var client = new WebClient())
{
if (postItems != null && postItems.Count() > 0)
{
string dataString = string.Join("&", postItems.Select(
item => string.Format("{0}={1}", item.Key, item.Value)).ToArray());
data = new ASCIIEncoding().GetBytes(dataString);
}
response = client.UploadData(url, "POST", data);
Android.Util.Log.Info("info", "response from the post received. about to get string");
client.Dispose();
}
try
{
return Encoding.ASCII.GetString(response);
}
catch (Exception ex)
{
Android.Util.Log.Info("info",
"Encoding.ASCII.GetString Exception : {0}, {1}", ex.Message, ex.StackTrace);
throw new ApplicationException("UnRecoverable. Abort");
}
}
堆棧跟蹤我得到的是
I/sssvida (10960): response from the post received. about to get string
I/mono (10960): Stacktrace:
I/mono (10960):
I/mono (10960): at System.Text.ASCIIEncoding.GetString (byte[],int,int) <0x000cb>
I/mono (10960): at System.Text.Encoding.GetString (byte[]) <0x00037>
I/mono (10960): at ServiceRequest.ExecuteRequest (System.Uri,System.Collections.Generic.KeyValuePair`2<string, string>[]) <0x0026b>
Intermitently,我得到下面
I/mono (9817): Stacktrace:
I/mono (9817):
F/ (9817): * Assertion at ../../../../mono/mini/mini-exceptions.c:472, condition `class' not met
D/dalvikvm( 220): GC_EXPLICIT freed 1K, 35% free 17547K/26759K, paused 3ms+3ms
的響應示出的不同尋常堆棧跟蹤是可以爲1之間JSON數據 - MB 4。
請幫忙。謝謝!!!!
編輯2: 我更新的代碼使用UploadString而不是UploadData間歇我得到這個:
I/mono (15065): Stacktrace:
I/mono (15065):
I/mono (15065): at string.CreateString (char[]) <0x0004b>
I/mono (15065): at (wrapper managed-to-managed) string..ctor (char[]) <0xffffffff>
I/mono (15065): at System.Text.Encoding.GetString (byte[],int,int) <0x00043>
I/mono (15065): at System.Text.UTF8Encoding.GetString (byte[],int,int) <0x0002b>
I/mono (15065): at System.Text.Encoding.GetString (byte[]) <0x00037>
I/mono (15065): at System.Net.WebClient.UploadString (System.Uri,string,string) <0x0007f>
I/mono (15065): at (wrapper remoting-invoke-with-check) System.Net.WebClient.UploadString (System.Uri,string,string) <0xffffffff>
這是一個明確的錯誤。請在http://bugzilla.xamarin.com上提供一個可複製的測試用例的錯誤。 –