从FileStream返回Serializable对象?

时间:2010-12-30 20:45:32

标签: asp.net serialization stream filestream

在流式传输和序列化方面,我有点绿色......但我想要做的是让服务器上的Upload方法向客户端返回一个可序列化的对象(现在它是空的)。

我有一个用[Serializable]装饰的公共类ServiceResult,以及一个实现IFileTransferService的公共类FileTransferService

[ServiceContract()]
public interface IFileTransferService
{
    [OperationContract(IsOneWay = false)]
    string Upload(FileTransferRequest request);
}

实现做了它的事情,然后在最后我创建并序列化对象并尝试返回字符串

return ServiceResultSerializer.SerializeAnObject(result);

在客户端,我使用此类

调用此服务
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IFileTransferService")]
public interface IFileTransferService
{

    // CODEGEN: Generating message contract since the wrapper name (FileTransferRequest) of message FileTransferRequest does not match the default value (Upload)
    [System.ServiceModel.OperationContractAttribute(IsOneWay = false, Action = "http://tempuri.org/IFileTransferService/Upload")]
    string Upload(FileTransferRequest request);
}

我基本上是在这个博客上找到这个项目:http://weblogs.asp.net/cibrax/archive/2007/08/29/sending-attachments-with-wcf.aspx

尝试让它返回客户端调用者可以使用的值

我现在收到的错误是:

  

无法加载“上传”操作,因为它具有类型为System.ServiceModel.Channels.Message的参数或返回类型,或者具有MessageContractAttribute的类型和其他不同类型的参数。使用System.ServiceModel.Channels.Message或使用MessageContractAttribute类型时,该方法不得使用任何其他类型的参数。

我不知道这意味着什么:P我认为因为我正在尝试更改服务参数。

对不起,如果我太一般了 - 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

听起来我的FileTransferRequest班级已应用MessageContractAttribute

由于您的输入参数为MessageContractAttribute,因此您的回复类型也应为MessageContractAttributeString不会。尝试创建一个具有单个字符串类型属性的FileTransferResponse类,并将其用作返回类型。