Я делаю WP7, который берет изображение из галереи или с камеры и, нажимая кнопку, отправляет его в веб-сервис, кодируя его в строку base64.В настоящее время я использую эмулятор WP7, включенный в VS2010.
Для этого я пытаюсь использовать объект 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