2017-08-25 91 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

相關問題