【问题标题】:Return Serializable object from FileStream?从 FileStream 返回 Serializable 对象?
【发布时间】:2014-05-08 13:59:05
【问题描述】:

在流式传输和序列化方面我有点绿...但我想做的是让服务器上的 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 我想是因为我正在尝试更改服务参数。

对不起,如果我过于笼统 - 任何帮助将不胜感激。

【问题讨论】:

  • 我认为您发布的代码中缺少某些内容。您提到的ServiceResult 课程在哪里?还有,FileTransferRequest的定义是什么?

标签: asp.net serialization stream filestream


【解决方案1】:

在我看来,您的 FileTransferRequest 类应用了 MessageContractAttribute

由于您的输入参数有MessageContractAttribute,您的响应类型也应该有MessageContractAttribute,而String 没有。尝试创建一个具有单个字符串类型属性的 FileTransferResponse 类,并将其用作您的返回类型。

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多