如何在移动应用中修复服务器错误500 Web API

时间:2018-10-13 09:19:37

标签: asp.net azure asp.net-web-api mobile

我有一个ASP.NET WEB API项目,该项目允许用户上传图像,然后在另一个页面中查看这些图像。
图像上传成功;但是,当从移动应用中调用GET方法时,其中一些图像会返回服务器错误500

如果我复制返回错误的网址并执行来自浏览器或邮递员的请求,则该网址可以正常工作,因此可以在服务器中找到图像。
网址不能仅在移动设备上运行的原因可能是什么?
这是返回图像的代码:

    [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 :(得分:0)

错误发生在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;
                }
            }

谢谢!