从WCF客户端调用ServiceStack服务

时间:2013-05-03 09:31:39

标签: .net wcf servicestack

我有一个使用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; }
  ...
}

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

1 个答案:

答案 0 :(得分:2)

在参数类的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; }
  ...
}