2017-08-25 73 views
0

我正在寻找使用ServiceStack Web服务来代替现有的第三方Web服务。我已经匹配了第三方服务使用的DTO。然而,客户期待名为“NotificationServiceClient”代理类,就像这样:ServiceStack重命名SyncReply客户端

var client = new NotificationService.NotificationServiceClient(); 
var response = client.SendNotification(message); 

我无法改变的客户端应用程序的源代码,所以我想ServiceStack配置为使用NotificationService客户端代理,而不是SyncReply。有没有办法做到这一点?

UPDATE - 看来我正在寻找的是一种配置ServiceStack的方法,以便它为wsdl:service标签的name属性生成一个不同的值;从SyncReply到NotificationServiceClient。我可以保存当前的WSDL,手动操作它,并使用不需要的客户端验证代理类名称。

回答

0

根据mythz的评论,我重写了我的AppHost中的GenerateWsdl,并在wsdlTemplate上设置了ServiceName属性。这里有一个例子:

public override string GenerateWsdl(WsdlTemplateBase wsdlTemplate) 
{ 
    wsdlTemplate.ServiceName = "NotificationService"; 
    return base.GenerateWsdl(wsdlTemplate); 
} 
0

不要使用ServiceStack's .NET Service Clients来消费第三方API,它们只是设计和斟酌使用ServiceStack服务。

我们推荐用于调用第三方API的唯一HTTP客户端是HTTP Utils,它是我们的通用HTML客户端。

+0

我没有对生产实际的客户端的控制,所以我在寻找一种方法来控制WSDL中的名称。 – KrimblKrum

+0

@Jason如果你只是想修改ServiceStack返回的WSDL,你可以重写[AppHost中的GenerateWsdl()](https://github.com/ServiceStack/ServiceStack/blob/574a82d58a3099d3b819659008b42b7dccc67bb3/src/ServiceStack/ServiceStackHost.cs# L935),它将允许您修改ServiceStack返回的WSDL XML。 – mythz

+1

这完全是我在找的!我会根据这个建议提交完整的答案。谢谢。 – KrimblKrum

相关问题