Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
C# WCF Rest服务根据输入参数重新调用不同的类型(字符串或图像)_C#_Wcf_Rest_Dynamic_Stream - Fatal编程技术网

C# 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=

我已经有了一个返回图像(作为流)的WCF Rest服务

这是我的合同

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>