Как исправить ошибку сервера 500 web api в мобильном приложении - PullRequest
0 голосов
/ 13 октября 2018

У меня есть проект ASP.NET WEB API, который позволяет пользователю загружать изображения, затем эти изображения просматриваются на другой странице.
Изображения успешно загружены;однако некоторые из этих изображений возвращают ОШИБКА СЕРВЕРА 500 при вызове метода GET из мобильного приложения.

Если я скопирую URL-адрес, который возвращает ошибку, и выполню запрос из браузера или почтальона, URL-адрес будет работать правильно, поэтому изображения будут найдены на сервере.
Что может быть причиной того, что URL-адрес не являетсяработает только на мобильном?
Вот код, который возвращает изображение:

    [HttpGet]
    [Route("Stores/{id}/Photos/{pid}")]
    public HttpResponseMessage GetStorePhoto(int id, int pid)
    {
        using (var db = new ApplicationDbContext())
        {
            var photo = store.Photos.FirstOrDefault(p => p.Id == pid);
            if (photo == null)
                return ImageNotFound();  //returns a default image in case image not found

            var filePath =
            HttpContext.Current.Server.MapPath("~/Uploads/Stores/" + photo.FileName);

            if (!File.Exists(filePath))
                return ImageNotFound();
            var response = new HttpResponseMessage();
            response.Content = new StreamContent(new FileStream(filePath, FileMode.Open));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");

            return response;
        }
    }

1 Ответ

0 голосов
/ 16 октября 2018

Ошибка была на getRequest. Я пытался получить доступ к одной и той же папке дважды, чтобы получить ширину и высоту фотографии.После того, как я удалил этот код, ошибка была исправлена.
Вот код, который я вызывал перед получением изображения:

            foreach (var photo in Photos)
            {
                try
                {
                    Image img = Image.FromFile(HttpContext.Current.Server.MapPath("~/Uploads/Stores/" + photo.FileName));
                    var sizedImage = new Bitmap(img.Width, img.Height, PixelFormat.Format32bppArgb);
                    photo.Height = sizedImage.Height;
                    photo.Width = sizedImage.Width;

                }
                catch (Exception Ex)
                {
                    continue;
                }
            }

Спасибо!

...