Байт [] из БД в BitmapImageSource - одна ошибка за другой - PullRequest
0 голосов
/ 20 декабря 2018

Я создаю приложение UWP для компании, в которой я работаю, чтобы загрузить часть удостоверения личности с фотографией.Когда пользователь щелкает, чтобы загрузить средство выбора, отображается и загружает изображение в элемент изображения.Это работает нормально, проблема в том, когда вытащить существующую запись, к которой уже прикреплена фотография.Файл хранится как байт [], код, который я использую в веб-приложениях .Net, здесь не работает.Я не могу заставить его работать даже после недели чтения поста после поста на бесчисленных сайтах.

using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    photo.ID = reader.GetGuid(0);
                                    photo.AttachmentType = reader.GetString(1);
                                    photo.AttachmentSize = reader.GetInt32(2);
                                    photo.Attachment = (byte[])reader.GetValue(3);
                                }
                            }
                            RemoveBtn.Visibility = Visibility.Visible;

                        }
                    }
                }
            }
        }
        catch (Exception eSql)
        {
            var err = eSql.Message.ToString();
        }

        if (photo.Attachment != null && photo.Attachment.Length > 0)
        {
            //StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            //StorageFile file = await folder.CreateFileAsync($"tempImg{photo.AttachmentType}");
            //string path = @"D:\DOT2";
            //string fileName = "tempImg.png";
            //string pathStr = Path.Combine(path, fileName);

            using (Stream stream = new MemoryStream())
            {
                await stream.WriteAsync(photo.Attachment, 0, photo.Attachment.Length);

                using (IRandomAccessStream fileStream = stream.AsRandomAccessStream())
                {

                    BitmapImage img = new BitmapImage();
                    await img.SetSourceAsync(fileStream); //Error Occurs here.
                    CIPhoto.Source = img;
                }

            }

            UploadBtn.Visibility = Visibility.Collapsed;
            RemoveBtn.Visibility = Visibility.Visible;
        }

Ожидаемый результат - преобразовать byte [] в BitmapImageSource, который я могу установить в Image UIЭлемент.Я получаю ошибку за ошибкой, в настоящее время я получаю сообщение об ошибке: «Попытка чтения или записи в защищенную память.Это часто указывает на то, что другая память повреждена ».Прокомментированный раздел говорит мне, что мне отказано в доступе.Я застрял, пожалуйста, помогите.

...