У меня есть общий обработчик в vb.net, который строит диаграмму, а затем возвращает png в результате.
Соответствующий код в /GetChart.ashx (который на самом деле называется /GetChart.ashx?report=1):
AssetChart.RenderType = RenderType.BinaryStreaming
Dim mstream As New MemoryStream()
AssetChart.SaveImage(mstream, ChartImageFormat.Png)
Dim byteArray As Byte() = mstream.ToArray()
context.Response.Clear()
context.Response.ContentType = "image/png"
context.Response.AddHeader("Content-Length", byteArray.Length.ToString())
context.Response.BinaryWrite(byteArray)
context.Response.Flush()
context.Response.Close()
Когда я пытаюсь открыть эту страницу через FireFox или IE, я получаю изображение PNG в браузере без ошибок.
НО, когда я пытаюсь вызвать этот обработчик из другого универсального обработчика, я получаю недопустимый параметр при вызове FromStream для изображения:
url = "http://www.google.com/images/logos/ps_logo2.png"
url = "http://mysite/GetChart.ashx?report=1"
Dim HttpWebRequest As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest)
Dim HttpWebResponse As HttpWebResponse = DirectCast(HttpWebRequest.GetResponse(), HttpWebResponse)
Dim respStream As Stream = HttpWebResponse.GetResponseStream()
Dim image As System.Drawing.Image = System.Drawing.Image.FromStream(respStream)
image.Save("C:\test.png", ImageFormat.Png)
Если я закомментирую эту строку и вместо этого использую изображение Google ...
url = "http://mysite/GetChart.ashx?report=1"
... это работает, поэтому я полагаю, что проблема заключается в обработчике FIRST (GetChart.ashx), и почему-то он не доставляет именно то, что мне нужно, даже если браузеры справляются с этим должным образом?
Буду признателен за любые мысли или помощь.
Спасибо!