У меня есть DLL, которая собирается вернуть объект (растровое изображение), и я должен передать его в браузер.
Все в памяти, нет доступа к диску.
Я знаю, как это сделать с помощью веб-формы asp.net, но я не знаю, с MVC.
с веб-формой,
так как у меня есть контроль над dll, я наследую класс с помощью webcontrol.image.
На странице aspx я создаю простую ссылку img, например:
<img src="Handler1.ashx>
в Handler1.ashx у меня есть такой код:
Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
context.Response.Clear()
Dim bmp As Bitmap = Nothing
Dim dll As New myDll.Class
dll.drawPicture(bmp)
context.Response.ContentType = "image/jpeg"
bmp.Save(context.Response.OutputStream, ImageFormat.Jpeg)
context.Response.End()
End Sub
(я убрал чистящие средства / бесполезный код, чтобы сократить его)
редактировать
решение
Function img() As FileResult
Dim bmp As Bitmap = Nothing
Dim dll As New myDll.myClass
dll.DrawPicture(bmp)
Dim imgStream As New IO.MemoryStream
bmp.Save(imgStream, ImageFormat.Png)
imgStream.Position = 0
bmp.Dispose()
dll.Dispose()
bmp = Nothing
dll = Nothing
Return File(imgStream.ToArray, "image/png")
End Function
У меня нет проблем с запуском кода очистки на всем, кроме потока памяти, есть ли вероятность утечки памяти? (Думаю да)