適用在SilverLight的byte與字串互轉

適用在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);