【问题标题】:Calling ServiceStack service from WCF client从 WCF 客户端调用 ServiceStack 服务
【发布时间】:2013-05-03 09:31:39
【问题描述】:

我有一个使用 WCF 开发的旧 SOAP 服务以及一些使用 WCF 调用该服务的 .NET 客户端。

我使用实现相同功能的 ServiceStack 框架创建了一个新服务。
是否可以从 WCF 客户端调用 ServiceStack 而无需对客户端进行任何代码或配置更改?

我可以随意对 ServiceStack 服务进行任何必要的更改。

编辑:
向前迈出一小步。
在将正确的命名空间添加到 AssemblyInfo.cs 并将“/soap11”附加到 URL 后,最终会调用正确的服务方法,但不会传输参数数据。

客户端调用的 WCF 代理方法采用一个参数“e”,它是一个具有一些字符串和 int 属性的类。
通过网络发送的 SOAP 主体以:

<MyMethod xmlns="http://mynamespace">
  <e>
    <PropertyA xmlns="http://schemas.datacontract.org/2004/07/MyProject.Service.Entities">somestring</PropertyA>
    <PropertyB xmlns="http://schemas.datacontract.org/2004/07/MyProject.Service.Entities">123</PropertyB>

ServiceStack DTO 如下所示:

[DataContract]
public class MyMethod
{
  [DataMember] public EventData e { get; set; }
}

[DataContract]
public class EventData
{
  [DataMember] public string ProperyA { get; set; }
  [DataMember] public int ProperyB { get; set; }
  ...
}

如何在服务中添加正确的属性命名空间定义?
我需要吗?

【问题讨论】:

    标签: .net wcf servicestack


    【解决方案1】:

    在我的参数类中为 DataContract 属性添加正确的命名空间解决了这个问题。

    [DataContract(Namespace = "http://schemas.datacontract.org/2004/07/MyProject.Service.Entities")]
    public class EventData
    {
      [DataMember] public string ProperyA { get; set; }
      [DataMember] public int ProperyB { get; set; }
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2011-03-04
      相关资源
      最近更新 更多