【发布时间】:2013-04-15 13:00:07
【问题描述】:
基本上我正在尝试将以下类型的对象从 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 个)。
这可能是什么问题?
【问题讨论】:
-
可能是因为它们在页眉中?无论如何,如果您编写客户的代码,帮助您会容易得多:)
-
那么我怎样才能在客户端包含标题呢?并且客户端代码在这里并不是真正重要的,因为它只是对 Web 服务的调用,其中它显然只接受 1 个参数(字节数组)而不是任何标题
-
标头始终存在,每条 HTTP 消息都有一个标头和一个正文,通常 WCF(或 WebAPI 或您用来编写客户端的任何东西)提供访问响应中标头的函数并在请求对象中......代码会有所帮助。
-
如果你真的想看看我调用 web 服务的代码然后确定,这里是:
codevar memoryStream = new MemoryStream(); ofd.File.OpenRead().CopyTo(memoryStream); byte[] bytes = memoryStream.ToArray(); UploadMessage 消息 = 新的 UploadMessage();服务.UploadFileStreamAsync(字节); - 不再接受任何参数code虽然我没有看到它的用途。 -
好的,这是来自网络的内存流,但没有定义消息契约,只有原始数据。 Nabheet 的回答会对您有所帮助,我认为您的客户端未正确实施。
标签: c# .net wcf silverlight silverlight-4.0