Отображение сгенерированных во время выполнения изображений в MVC ASP.NET: ashx vs ImageResult - PullRequest
2 голосов
/ 19 февраля 2010

Я ссылаюсь на файл Ashx, чтобы показать изображение, которое генерируется во время выполнения:

<img alt="" style="height: 200px; width: 450px;" 
   id="Img1" src="<%= Url.Content ("~/Helpers/GetImage.ashx?side=Front") %>" />

Ниже приведен код, который создает изображение. Но я обеспокоен тем, что это не правильный подход; я должен вместо этого использовать контроллер, который возвращает ImageResult?

if (!string.IsNullOrEmpty(context.Request.Params["side"]))
{

    string ImageType = string.Empty;
    if (context.Request.Params["side"].Equals("Front"))
    { 
        ImageType="FrontJpegBase64";
    }
    else
    {
        ImageType = "BackJpegBase64";
    }

    Log.Info(context.Session["FrontBase64"].ToString());
    byte[] imageByteArray = System.Convert.FromBase64String(context.Session[ImageType].ToString());
    System.IO.MemoryStream imageMemoryStream = new System.IO.MemoryStream(imageByteArray);
    try
    {
        using (System.Drawing.Image img = System.Drawing.Image.FromStream(imageMemoryStream))
        {
            img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    catch (System.Exception ex)
    {
        Log.Error(ex, ": ConvertBytesToImage {0} ");
    }
    finally
    {
        imageMemoryStream.Close();
        context.Response.Flush();
    }
}

Ответы [ 2 ]

0 голосов
/ 19 февраля 2010

Я думаю, что обработка через Ashx - это хороший подход.Я использовал его в некоторых своих проектах, и он отлично работал!

0 голосов
/ 19 февраля 2010

ashx в 7.23 раз быстрее, чем при использовании действий контроллера.

...