返回图像的ASMX Web服务

时间:2010-12-28 20:54:40

标签: asp.net asmx

我想要一个返回.png文件的.asmx服务。我的问题是,我的Web应用程序托管在GoDaddy上。因此,我无法编辑web.config文件。如果我可以编辑web.config文件,我只需创建一个HTTP Handler。

我的问题是,有没有办法让.asmx返回图像?如果是这样,怎么样?

4 个答案:

答案 0 :(得分:2)

为什么不简单地让服务将图像作为字节数组返回(byte[])。

我不知道为什么你认为你应该编辑web.config。

答案 1 :(得分:2)

这实际上取决于您想要如何使用图像。 如果你选择像John建议的那样返回一个字节数组,那么将序列化为xml(或json)会有很大的开销,比如13-15倍(对于xml)。

我建议您使用引用该图像的查询字符串arg创建一个通用处理程序(.ashx),并直接写入响应流。

然后在您的Web服务中,代替图像,使用正确的查询字符串将url返回给处理程序。然后,服务的消费者可以负责获取图像。

希望这有帮助。

答案 2 :(得分:0)

从Web服务返回图像的最佳方法可能只是将其作为字节数组或包含字节数组的自定义类型(以及其他信息,如图像类型或建议的文件名)返回等等。)。

当你说你希望它返回图像时,你到底想要什么?您是否期望图像在链接时在Web浏览器中呈现图像的方式?如果是这样,您将不得不手动操作输出。网上有很多关于“在asp.net中显示来自数据库的图像”的教程,这对你有帮助。

基本上,你会劫持响应并更改其标题,编写二进制图像数据并结束响应。它在网页上运行良好,但我从来没有在网络服务上尝试过。但是,对于Web服务来说,这将被视为不良形式。它会破坏网络服务的“合同”。 (这就是为什么我希望,至少假设,这不是预期的效果。)

答案 3 :(得分:0)

如果您只想要一个返回PNG文件的处理程序,请使用.ashx文件。如果您想要一个带有返回PNG文件的方法的服务,请先将PNG转换为字节数组并返回该数组。