Я звоню в веб-сервис, который возвращает неизвестное количество изображений в виде набора байтовых массивов. (Я не могу это изменить)
Мне нужно отобразить каждое изображение на одной веб-странице aspx.
В настоящее время я использую элемент управления Microsoft.Web.GeneratedImage;
http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16449
для отображения изображений.
Проблема, с которой я столкнулся, заключается в том, что, поскольку элемент управления вызывает отдельный файл кода для загрузки содержимого изображения, я использую состояние сеанса для хранения байтовой матрицы, что меня не слишком радует.
Вот код из моего тестового проекта;
Private Sub btnGetChart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGetChart.Click
Dim reportHub As New HubWrapper
Dim repCharts() As ReportHub.Chart = reportHub.ReportHubChart(Me.ddlReports.SelectedValue, ViewState("params"))
For Each chart As ReportHub.Chart In repCharts
Dim sessionKey As String = "img" & System.Guid.NewGuid().ToString
Dim imgParam As New Microsoft.Web.ImageParameter()
imgParam.Name = "sessionVar"
imgParam.Value = sessionKey
Session(sessionKey) = chart.ChartData
Dim img As New Microsoft.Web.GeneratedImage
img.ImageHandlerUrl = "~/chartImageHandler.ashx"
img.Parameters.Add(imgParam)
phChart.Controls.Add(img)
Next
End Sub
<%@ WebHandler Language="VB" Class="chartImageHandler" %>
Imports System
Imports System.Collections.Specialized
Imports System.Drawing
Imports System.Web
Imports Microsoft.Web
Public Class chartImageHandler
Inherits ImageHandler
Implements IRequiresSessionState
Public Sub New()
MyBase.New()
'Set caching settings and add image transformations here
'EnableServerCache = True
End Sub
Public Overrides Function GenerateImage(ByVal parameters As NameValueCollection) As ImageInfo
Dim byteArry As Byte() = CType(HttpContext.Current.Session(parameters("sessionVar")), Byte())
HttpContext.Current.Session.Remove(parameters("sessionVar"))
Return New ImageInfo(byteArry)
End Function
End Class
Какой самый элегантный способ достижения этого?
Любой ввод приветствуется !!!
РЕДАКТИРОВАТЬ: Дополнительная информация;
- Изображения с веб-сервиса
исходя из служб отчетов SQL.
- Изображения обычно бывают
все время меняется (не реально
требование кеширования).
- Изображения будут определяться пользователем.
- Веб-сервис вызывается только один раз на страницу.
- Я на самом деле избавляюсь от изображения из
состояние сеанса после сгенерированного
изображение использует его, так как изображение не будет
нужно было посмотреть снова для
в то время.