Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将.net图表以PNG格式传输?(参数无效)_.net_Image_Stream_Charts - Fatal编程技术网

如何将.net图表以PNG格式传输?(参数无效)

如何将.net图表以PNG格式传输?(参数无效),.net,image,stream,charts,.net,Image,Stream,Charts,我在vb.net中有一个通用处理程序,它构建一个图表,然后返回一个png作为结果 /GetChart.ashx(实际称为/GetChart.ashx?report=1)上的相关代码: 当我尝试通过FireFox或IE点击此页面时,我确实在浏览器中收到了PNG图像,没有任何错误 但是,当我尝试从另一个通用处理程序调用此处理程序时,我在为映像调用FromStream时收到参数无效: url = "http://www.google.com/images/logos/ps_logo2.png"

我在vb.net中有一个通用处理程序,它构建一个图表,然后返回一个png作为结果

/GetChart.ashx(实际称为/GetChart.ashx?report=1)上的相关代码:

当我尝试通过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)
如果我把这行注释掉,用谷歌图片来测试

url = "http://mysite/GetChart.ashx?report=1"
。。。它是有效的,所以这让我相信问题在于第一个处理程序(GetChart.ashx),尽管浏览器按预期处理它,但它并没有提供我想要的东西

如有任何想法或帮助,将不胜感激


谢谢大家!

第一个想法:尝试将流的内容转储到磁盘,这是查看实际交付内容的最简单方法。将其与原始文件进行比较


第二个想法:用于查看HTTP级别上发生的情况。

您可以将代码简化为:

context.Response.Clear()
context.Response.ContentType = "image/png"
AssetChart.SaveImage(context.Response.OutputStream, ChartImageFormat.Png)

看到了吗?

我在web.config中添加了一个部分,允许所有用户点击GetChart.ashx,现在请求通过并检索图像

<location path="GetChart.ashx">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>


谢谢你的想法。我要到明天早上才能真正回到项目中去(没有vpn访问来完成其余的周边代码,而且太多的工作无法单独完成),但是我很欣赏这篇文章。我还没有15分,否则我会把这个加分。这是正确的做法,对吗?你可能没有回答,但给出了一个有效的想法或两个链接,等等。对吗?正如我上面所说,今晚不能点击它,但这将是我早上尝试的第一件事。谢谢你们,我会让你们知道事情的进展。这里也一样——我还没有15分,否则我也会把这个加分。这是正确的做法,对吗?您可能没有肯定地回答,但给出了一段很好的代码供您尝试?我认为只有在有助于您解决问题的情况下,您才应该向上投票。如果没有,那就别管它了。你不认为它应该得到提升投票,即使这个人写了一篇非常好的文章,有几个选项(可能还有可能帮助其他人的代码),但没有一个碰巧对我有用?如果它对我的问题有帮助,我应该点击复选标记,对吗?那不是不同吗?
<location path="GetChart.ashx">
    <system.web>
      <authorization>
        <allow users="?"/>
      </authorization>
    </system.web>
  </location>