0

本质上,我正在尝试将以下类型的对象从 SilverLight 发送到 WCF 服务。对象的消息契约如下:

[MessageContract]
    public class UploadMessage
    {
        [MessageHeader(MustUnderstand = true)]
        public Token Token;

        [MessageHeader(MustUnderstand = true)]
        public string FileExtension;

        [MessageHeader(MustUnderstand = true)]
        public Product Product;

        [MessageBodyMember(Order = 1)]
        public Stream FileByteStream;

}

[OperationContract(IsOneWay = true)]
        void UploadFileStream(UploadMessage upm);

但是,每当我尝试从 SilverLight 客户端调用该方法时,我只能指定 FileByteStream 参数(而不是其他 3 个)。

这里可能是什么问题?

4

1 回答 1

1

你在使用 Visual Studio 吗?

将消息标头添加到消息合同后,您是否在 Silverlight 项目中更新了对 WCF 服务的服务引用?

当我对 WCF 服务进行一些更改但忘记更新服务引用或 Web 引用时,通常会发生此问题。

希望这可以帮助。

编辑1:

我忘了提到,当您添加服务引用时,您需要选中说明有关创建消息合同的内容的框。默认情况下,Visual Studio 不会创建消息协定,它只会在 WCF 客户端代理中创建数据协定。只有消息合同允许您访问消息标头。

于 2013-04-15T13:16:27.517 回答