-1

我有 ASP.NET MVC 应用程序,我在其中使用 HTTP 处理程序 ashx 文件来获取页面上的图像。此图像由用户通过扫描文档上传。

现在我的问题是每个用户都显示它,除了一个,用户报告他无法看到图像,即使它已成功加载,当我检查日志时它显示服务器有图像。转换图像时服务器上也没有记录异常:(还有一件经常发生的事情,70%的用户无法在页面中看到图像。30%的时间他设法看到了图像......奇怪的问题请指教可能是什么问题?

下面是我的代码

 public class GetImage : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{

    public GetImage()
    {

    }

    public void ProcessRequest(HttpContext context)
    {
        if (context != null)
        {
            if (!string.IsNullOrEmpty(context.Request.Params["side"]))
            {
                bool isFront = false;
                if (context.Request.Params["side"].Equals("Front"))
                {
                    isFront = true;
                }
                else
                {
                    isFront = false;
                }


                ICache Cache = CacheManager.SessionCache;
                DepositState depState = (DepositState)Cache[Constants.DepositSession];

                if (depState != null)
                {
                    byte[] imageByteArray = null;
                    System.IO.MemoryStream imageMemoryStream = null;
                    try
                    {

                        if (isFront)
                        {
                            imageByteArray = System.Convert.FromBase64String(depState.FrontJpegBase64);

                        }
                        else
                        {
                            imageByteArray = System.Convert.FromBase64String(depState.BackJpegBase64);
                        }

                        imageMemoryStream = new System.IO.MemoryStream(imageByteArray);

                        using (System.Drawing.Image img = System.Drawing.Image.FromStream(imageMemoryStream))
                        {
                            img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                        }
                    }
                    catch(Exception  ex)
                    {
                        Log.Error(Constants.DefaultErrorCode, "Exception occured while converting image to Base 64 in GetImage.ashx.cs" + ex);

                    }

                    imageMemoryStream.Close();
                    context.Response.Flush();
                }
                else
                {
                    Log.Error(Constants.DefaultErrorCode, " Deposit State object is nullin GetImage.ashx ");

                }



            }
        }
        else
        {
            Log.Error(Constants.DefaultErrorCode, "Context is null in the Process Request  ");
        }


    }

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

1 回答 1

2

我看不到您在哪里设置 context.Response.ContentType。我没有对此进行测试,但我想知道缺少的标头是否会导致不可预测的浏览器行为。

于 2010-06-30T22:37:35.340 回答