我有一个 ASP.NET WEB API项目,允许用户上传图像,然后在另一个页面中查看这些图像。
图像已成功上载;但是,当从移动应用程序调用 GET 方法时,其中一些图像返回服务器错误 500。
如果我复制返回错误的 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;
}
}
错误出在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;
}
}
谢谢!