系统.Windows Phone 7初始化FileStream时的accessexception

本文关键字:FileStream 时的 accessexception 初始化 Windows Phone 系统 | 更新日期: 2023-09-27 18:10:41

我正在制作一个WP7,它从画廊或相机中获取图像,并通过按下按钮将其编码为base64字符串发送到web服务。我目前正在使用VS2010中包含的WP7模拟器。

为此,我尝试使用FileStream对象来打开存储在图像路径中的图像。但是,当我尝试初始化FileStream时,我在控制台中得到消息:

类型为'System '的第一次异常。MethodAccessException"发生在LiveAndesApp.dll

'taskhost.exe' (Managed): Loaded '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类的代码。为了简洁起见,我省略了与web请求相关的所有内容:
    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

系统.Windows Phone 7初始化FileStream时的accessexception

使用隔离存储而不是系统。IO

FileStream是System的一部分。IO命名空间,可以替换为类似IsolatedStorageFileStream

有帮助的链接