.net 如何从WCF REST服务返回包含二进制数据的结构?
我必须实现以下场景:.net 如何从WCF REST服务返回包含二进制数据的结构?,.net,wcf,web-services,rest,.net,Wcf,Web Services,Rest,我必须实现以下场景: 客户端向WCF REST服务发送请求,该服务提供一组参数和一个要处理的二进制文件 该服务获取该文件,对其进行处理并生成一个结果二进制文件 服务必须返回一些结构,其中包含“成功/失败”处理状态、错误消息(如果有),如果没有错误,则返回结果文件 在SOAP服务中,我只返回如下内容: class ProcessingResult { public: bool IsFailed; string ErrorMessage; byte[] ResultDat
- 客户端向WCF REST服务发送请求,该服务提供一组参数和一个要处理的二进制文件
- 该服务获取该文件,对其进行处理并生成一个结果二进制文件
- 服务必须返回一些结构,其中包含“成功/失败”处理状态、错误消息(如果有),如果没有错误,则返回结果文件
class ProcessingResult {
public:
bool IsFailed;
string ErrorMessage;
byte[] ResultData;
};
中间件将通过连接正确地序列化它,然后客户机代理(通过解析WSDL生成)将对其进行反序列化,客户机将很高兴
如何在WCF REST服务中设计类似的东西?您可以在REST服务中也这样做。这是服务合同:
[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(Method = "POST")]
ProcessingResult ProcessData(byte[] data);
}
public class ProcessingResult
{
public bool IsFailed { get; set; }
public string ErrorMessage { get; set; }
public byte[] ResultData { get; set; }
}
所有字节数组将作为base64编码字符串发送。请求消息的示例:
<base64Binary xmlns="http://schemas.microsoft.com/2003/10/Serialization/">QmFzZSA2NCBTdHJlYW0=</base64Binary>
QmFzZSA2NCBTdHJlYW0=
响应消息的示例:
<ProcessingResult xmlns="http://schemas.datacontract.org/2004/07/RestService">
<ErrorMessage>String content</ErrorMessage>
<IsFailed>true</IsFailed>
<ResultData>QmFzZSA2NCBTdHJlYW0=</ResultData>
</ProcessingResult>
字符串内容
真的
QmFzZSA2NCBTdHJlYW0=
你为什么重新发布你的问题:而不是修改原来的问题?@Ladislav Mrnka:那是另一个问题。我需要适当地设计数据类型,而不是如何实现该请求的一般性想法。这非常好,谢谢。WCF服务是否也会公开xml模式?@sharptooth:WCF服务仅为SOAP服务公开描述(WSDL+模式)。在WCF 4.0中,您可以使用新的帮助页面功能,通过消息示例显示REST服务的一些描述(我在回答中发布的示例来自帮助页面)。