適用在SilverLight的byte與字串互轉
在SilverLight使用WebClient對Server端叫用網頁(.aspx or .ashx)取回Binary時,若網頁丟出例外,
在SilverLight收到的例外會是"遠端伺服器傳回一個錯誤: NotFound。
這樣的訊息在Client端根本不知道是發生什麼事,所以改成回傳一份訊息byte,寫法如下
Server 端
byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);
Response.Clear();
Response.BinaryWrite(byteArray);
Response.End();
SilverLight
string str = System.Text.Encoding.Default.GetString(byteArray);
但...此行程式在SilverLight不支援,所以無法使用。
參考別人寫的可以使用Base64轉,但..中文字不能轉,所以我沒用。
http://wincn.org/post/330.html
最後參考小朱的一段Byte與字串互轉的程式,測試後互轉沒問題
Server 端
byte[] byteArray = Encoding.UTF8.GetBytes("發生例外!");
Response.Clear();
Response.BinaryWrite(byteArray);
Response.End();
SilverLight
byte[] byteArray = new byte[e.Result.Length];
e.Result.Read(byteArray, 0, byteArray.Length);
string errorMsg= Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);