如何从ASP.NET Web服务返回原始字节?

时间:2009-12-29 15:44:39

标签: c# asp.net web-services

如果WebMethod返回字符串,则会将其序列化为xml。

我想使用响应的ContentType返回byte[] - 我是否也可以指定它?。

可以在ASP.NET Web服务Web方法中完成吗?

3 个答案:

答案 0 :(得分:2)

ASMX Web服务使用SOAP,内容类型始终为application/soap+xml,内容代表xml。即使从方法返回byte[],该数组也将被编码到soap体中。

答案 1 :(得分:2)

您可以从Web服务返回一个字节数组,但它仍然会被序列化到响应消息中。 (通常作为SOAP XML响应中的base-64。)

如果您只想返回二进制内容,则不应使用Web服务。相反,您可以将Response.BinaryWrite与没有html内容的常规页面一起使用,或者在http处理程序中使用context.BinaryWrite

答案 2 :(得分:2)

使用Generic Handler(.ashx)代替Web服务。

Generic Handler接受get / post请求,并使您能够通过HttpContext完全控制输出。

我通常使用它们将文件(pdfs等)发送到浏览器。