从WCF客户端调用ServiceStack服务
问题描述:
我有一个使用WCF开发的旧SOAP服务,还有一些使用WCF调用服务的.NET客户端。从WCF客户端调用ServiceStack服务
我使用实现相同功能的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; }
...
}
如何添加正确的属性命名空间定义的服务?
我需要吗?
答
在我的参数类的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; }
...
}