我有一个抽象基类可以使用protobuf序列化:
[ProtoContract]
class DataPacket
{
[ProtoMember(1)]
public byte[] Data {set;get;}
[ProtoMember(2)]
public byte[] Sign {set;get;}
[ProtoMember(3)]
public long UserId {set;get;}
[ProtoMember(4)]
public DateTime Stamp {set;get;}
}
挑战在于让WCF表示每个收到的消息的每个发送和检查签名。一个静态类中有两个静态方法:
bool Verify(DataPacket pack)
和
void Sign(DataPacket pack)
因此,如果验证方法返回false,我们需要抛出Exception
else - 默认WCF行为。
有可能解决吗?
答案 0 :(得分:0)
您可以将数据包包装在邮件合同中并强制执行签名:
[MessageContract]
public class {
[MessageBodyMember(ProtectionLevel = ProtectionLevel.Sign)]
public byte[] Packet { get; set; }
}
WCF将自动处理它(计算签名并将其嵌入到SOAP信封中)。当然,Protobuf(de)序列化取决于你。