我正在尝试创建一个WCF流媒体服务。我有两个要求,我似乎在试图让它工作时遇到绊脚石:
我的留言合同如下:
[MessageContract]
public class MyStream
{
[MessageHeader]
public long StreamSize;
[MessageBodyMember]
public Stream StreamData;
}
我的操作合同如下:
[ServiceContract]
public interface IStreamService
{
[OperationContract]
MyStream GetData(string data);
}
尝试使用Web服务时收到的错误消息是:
“GetData”操作不可能 因为它有一个参数或加载 返回类型的类型 System.ServiceModel.Channels.Message 或者有类型的 MessageContractAttribute等 不同类型的参数。什么时候 运用 System.ServiceModel.Channels.Message 或类型 MessageContractAttribute,方法 不得使用任何其他类型的 参数。
根据我对this post的理解,我需要使用消息合约来获取流的长度,但是当我从数据协定切换到消息合同时,我不再允许传入输入参数。
我是否缺少配置更改?或者别的什么我可以尝试?谢谢!
答案 0 :(得分:2)
您还必须为请求创建MessageContract。
[MessageContract]
public class GetDataRequest
{
[MessageBodyMember(Name="data")]
public string Data { get; set; }
}
然后按如下方式定义您的操作:
[OperationContract]
MyStream GetData(GetDataRequest request);