【问题标题】:Is it possible to return System.Messaging.Message in a serviceContract?是否可以在 serviceContract 中返回 System.Messaging.Message?
【发布时间】:2012-02-01 15:24:02
【问题描述】:

嘿嘿, 我在我的 WCF 服务中使用 httpBinding / netTcpBinding,我试图用 WCF 替换一些 .Net 远程处理代码。这是我将 .Net 远程处理方法转换为 WCF 服务合同时的第一次测试。我从字面上翻译了我的方法,旧代码使用 System.Messaging.Message 作为返回类型。

我的服务合同:

<OperationContract(Name:="ReceiveWithTimeOut")>
  <TransactionFlow(TransactionFlowOption.Allowed)>
  Function Receive(ByVal TimeOut As TimeSpan) As System.Messaging.Message

一切都在构建,服务上升,但是当我浏览我的服务时,我收到以下错误:

System.InvalidOperationException:在调用中引发了异常 WSDL 导出扩展: System.ServiceModel.Description.DataContractSerializerOperationBehavior 合约:http://..../ServiceContracts/2012/V1:IReaderContract ----> System.Runtime.Serialization.InvalidDataContractException:类型 'System.Messaging.MessageQueue' 无法序列化。

有什么方法可以返回 System.Messaging.Message 吗?

非常感谢。

亲切的问候。

乔纳森

【问题讨论】:

  • 您好,您看过:msdn.microsoft.com/en-us/library/ms789008.aspx WCF 的 msmq 绑定。我认为使用 net 或 http 绑定是不可能的。
  • 不,无法从 WCF 服务返回此类型。该类型仅用于本机 MSMQ 通信。您必须使用有效的可序列化返回类型。

标签: wcf serialization msmq datacontractserializer system.messaging


【解决方案1】:

我创建了自己的数据契约,并让客户端/服务器使用该数据契约的属性创建 MSMQ 消息。

【讨论】:

    猜你喜欢
    • 2019-02-25
    • 2017-10-31
    • 2012-10-03
    • 2010-10-24
    • 2019-06-20
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    相关资源
    最近更新 更多