而不是在Web方法本身(作为SOAP XML)中返回二进制流(MTOM / Base64编码),例如:
[WebMethod]
public byte[] Download(string FileName)
....
return byteArray;
这种方法能否以某种方式响应(可能通过Server
对象)?:
Response.BinaryWrite(byteArray);
伪:
[WebMethod]
public DownloadBinaryWrite(string FileName)
...
Response.BinaryWrite(byteArray);
答案 0 :(得分:8)
是的,有可能。您需要将返回类型更改为void,因为我们将直接写入响应,您需要手动设置内容类型并结束响应,以便它不会继续处理并发送更多内容数据
[WebMethod]
public void Download(string FileName)
{
HttpContext.Current.Response.ContentType = "image/png";
HttpContext.Current.Response.BinaryWrite(imagebytes);
HttpContext.Current.Response.End();
}
请注意,WebMethod目前为not really supported,您应该切换到Web API或WCF(如果您需要SOAP支持)。
答案 1 :(得分:0)
如果你想做BinaryWrite,你可能想要编写一个单独的IHttpHandler而不是web方法。 Web方法以SOAP的方式为导向,因此尽可能将它们放入自定义响应中是有点奇怪的。