1

我在将图像从流上传/发送到 ASP.NET 中的通用处理程序时遇到问题。我已经构建了一个 Windows Phone 应用程序,它可以拍摄图像并将其发送到我网站上的通用处理程序。

不幸的是,在某些情况下,图像变成(部分)灰色。我认为这可能与移动设备的互联网连接丢失/不良有关。这个问题每 50 张左右图像就会发生一次。

当发送有缺陷的图像时,我没有收到任何类型的错误。我正在寻找两种可能的解决方案。

  1. 我如何防止 Windows 手机将部分灰色图像上传到通用处理程序。
  2. 我如何检查服务器上的图像是否部分灰色,以便将错误消息发送回手机。

为了使这个问题更完整,我包含了通用处理程序的代码和示例图像。其次,我很好奇为什么会出现这种情况。TCPIP 有一个握手,所以上面的 isseu 应该是不可能的?

public class UploadImages : IHttpHandler
{
    private IWorkOrderRepository _workOrderRepository;
    private IDigitalFileRepository _digitalFileRepository;
    private IUserRepository _userRepository;

    public UploadImages()
    {
        _workOrderRepository = ((Global)HttpContext.Current.ApplicationInstance).Kernel.Get<IWorkOrderRepository>();
        _digitalFileRepository = ((Global)HttpContext.Current.ApplicationInstance).Kernel.Get<IDigitalFileRepository>();
        _userRepository = ((Global)HttpContext.Current.ApplicationInstance).Kernel.Get<IUserRepository>();
    }

    public void ProcessRequest(HttpContext context)
    {

        var cookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
        var user = (Domain.Users.User)HttpContext.Current.User;

        string WorkOrderId = context.Request.QueryString["workOrderId"];
        string latitude = context.Request.QueryString["LATITUDE"];
        string Longitude = context.Request.QueryString["LONGITUDE"];

        if (latitude != "0" && Longitude != "0")
        {
            string file = "Filename.jpg";
            string uploadPath = context.Server.MapPath("~/Temp/");
            using (var stream = new MemoryStream())
            {

                var image = ImageResizer.Resize(Image.FromStream(context.Request.InputStream), 700);
                image.Save(stream, ImageFormat.Jpeg);
                stream.Position = 0;
                var workOrder = _workOrderRepository.GetAll(x => x.Id == Convert.ToInt32(WorkOrderId)).FirstOrDefault();
                workOrder.AddPhoto(_workOrderRepository, _digitalFileRepository, new AuditInfo((Domain.Users.User)user), stream, file, "image/jpeg", Convert.ToDouble(latitude), Convert.ToDouble(Longitude));
            }
        }
        else
        {
            string file = "Filename.jpg";
            string uploadPath = context.Server.MapPath("~/Temp/");
            using (var stream = new MemoryStream())
            {

                var image = ImageResizer.Resize(Image.FromStream(context.Request.InputStream), 700);
                image.Save(stream, ImageFormat.Jpeg);
                stream.Position = 0;
                var workOrder = _workOrderRepository.GetAll(x => x.Id == Convert.ToInt32(WorkOrderId)).FirstOrDefault();
                workOrder.AddPhoto(_workOrderRepository, _digitalFileRepository, new AuditInfo((Domain.Users.User)user), stream, file, "image/jpeg");
            }
        }
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

示例图像部分灰色

示例图像部分灰色

4

0 回答 0