【问题标题】:ServiceStack Renaming SyncReply ClientServiceStack 重命名 SyncReply 客户端
【发布时间】:2017-08-26 05:16:55
【问题描述】:

我正在考虑使用 ServiceStack Web 服务来代替现有的第三方 Web 服务。我已经匹配了第三方服务使用的 DTO。但是,客户端需要一个名为“NotificationServiceClient”的代理类,如下所示:

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

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

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

【问题讨论】:

    标签: c# visual-studio-2015 servicestack


    【解决方案1】:

    不要使用ServiceStack's .NET Service Clients 来使用第 3 方 API,它们只是设计用于使用 ServiceStack 服务。

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

    【讨论】:

    • 我无法控制生产中的实际客户端,所以我正在寻找一种方法来控制 WSDL 中的名称。
    • @Jason 如果您只想修改 ServiceStack 返回的 WSDL,您可以覆盖 GenerateWsdl() in your AppHost,这将允许您修改 ServiceStack 返回的 WSDL XML。
    • 这正是我想要的!我将根据此建议提交完整的答案。谢谢。
    【解决方案2】:

    根据mythz 的评论,我已经覆盖了我的AppHost 中的GenerateWsdl,并在wsdlTemplate 上设置了ServiceName 属性。这是一个例子:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2014-04-02
      相关资源
      最近更新 更多