C# WCF Rest服务根据输入参数重新调用不同的类型(字符串或图像)
我已经有了一个返回图像(作为流)的WCF Rest服务 这是我的合同C# WCF Rest服务根据输入参数重新调用不同的类型(字符串或图像),c#,wcf,rest,dynamic,stream,C#,Wcf,Rest,Dynamic,Stream,我已经有了一个返回图像(作为流)的WCF Rest服务 这是我的合同 Stream GetImage(); 而且效果很好 现在我想将此服务更改为接受参数,根据参数返回图像(流) 或图像url(字符串)。诸如此类: /rest/getimage?format=url|image 我将GetIamge的返回类型更改为动态,并添加了[ServiceKnownType(typeof(Stream))] 但当我在浏览器中调用url时,我得到的不是图像,而是: <FileStream xmlns=
Stream GetImage();
而且效果很好
现在我想将此服务更改为接受参数,根据参数返回图像(流)
或图像url(字符串)。诸如此类:
/rest/getimage?format=url|image
我将GetIamge的返回类型更改为动态,并添加了[ServiceKnownType(typeof(Stream))]
但当我在浏览器中调用url时,我得到的不是图像,而是:
<FileStream xmlns="http://schemas.datacontract.org/2004/07/System.IO" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><__identity i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System"/></FileStream>
该代码与工作代码相同,我注意到如果我将返回类型从Stream更改为dynamic或object,就会出现此错误
我无法添加另一个端点(我们应该只有一个端点)。返回的类型必须是:值类型、字符串、流或可序列化类型。Dynamic没有任何这些特征。为什么不添加另一种方法呢
GetImageUrl(…)
?我想添加另一个方法,但我的客户端希望这样。好的,清除。将字符串包装在流中。客户可以负责“展开”。更清楚地说,创建一个MemoryStream
并将url的字节写入其中,然后将流
返回给客户端。我能想到的唯一选择。谢谢,我想这是唯一的选择,我会让你知道的。
<FileStream xmlns="http://schemas.datacontract.org/2004/07/System.IO" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><__identity i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/System"/></FileStream>