我正在製作一個WP7,它從圖庫或相機中獲取圖像,並通過按下按鈕將其發送到一個web服務,方法是將其編碼爲base64字符串。我目前正在使用VS2010中包含的WP7模擬器。System.MethodAccessException在初始化FileStream時Windows Phone 7
爲此,我嘗試使用FileStream對象來打開存儲在圖像路徑中的圖像。然而,當我嘗試初始化的FileStream,我在控制檯得到消息:
類型的第一個機會異常「System.MethodAccessException」 發生在LiveAndesApp.dll
「taskhost.exe」 (管理):加載類型的 'System.ServiceModel.Web.dll'
第一 機會異常 'System.Xml.XmlException' 發生在 system.xml.dll的
後面跟着很多很多的System.Xml.XmlException。奇怪的是,我把FileStream的創建置於一個try-catch語句中,該語句捕獲System.MethodAccessException和E,並且程序甚至不會輸入它,它只是繼續使用sendSighting
我在做什麼錯我該如何改進呢?非常感謝!
這裏是完整的代碼。這就是我稱之爲轉換圖片的方法。
public void next_Click(object sender, EventArgs e)
{
//Dependera de si seguimos flujos offline y online.
if (!offline_mode)
{
NavigationService.Navigate(new Uri("/Pages/SendInformation.xaml?mode=online", UriKind.Relative));
Controller c = new Controller();
c.sendSighting();
}
else { NavigationService.Navigate(new Uri("/Pages/SendInformation.xaml?mode=offline", UriKind.Relative)); }
這是Controller類的代碼。爲了簡潔起見,我省略了與網絡請求相關的所有內容:
public class Controller
{
public Controller()
{ }
/// <summary>
/// Manda un avistamiento al servicio.
/// </summary>
public void sendSighting()
{
//Obtenemos el avistamiento
AddSightingFlowObject flow_object = AddSightingFlowObject.getInstance();
//Creamos el objeto json y lo incorporamos al body del request.
JObject json = new JObject();
//Si la imagen no es nula, tenemos que procesarla.
JArray arr = new JArray(new List<String>());
if (flow_object.ImageControl != null)
{
String image_base_64 = ConvertImageToBase64(flow_object.ImagePath);
arr.Add(image_base_64);
}
else
{
arr.Add("");
}
json.Add("PhotoURL", arr);
}
public String ConvertImageToBase64(String imagePath)
{
String image_base_64 = "";
FileStream fs;
Byte[] arr;
try
{
fs = new FileStream(imagePath, FileMode.Open);
arr = new Byte[fs.Length];
fs.Read(arr, 0, arr.Length);
image_base_64 = System.Convert.ToBase64String(arr);
}
catch (System.MethodAccessException e)
{
String error = "Error: " + e.Message + "Stack Trace: " + e.StackTrace;
}
return image_base_64;
}
}
謝謝你的時間! :d
還有另一種捕獲System.IO命名空間的一部分:使類對next_Click的調用是從PhonePage繼承的公共部分類。也許這就是問題的原因,正如http://msdn.microsoft.com/en-us/library/system.methodaccessexception.aspx所解釋的那樣。但是,如果我嘗試在定義中刪除部分,它會說「缺少對類型爲LiveAndesApp.Pages.AddSightingSummary的聲明的部分修飾符;此類型的另一部分聲明存在」。我該如何解決這個問題?謝謝! :d –