2017-08-25 12 views
0

私は、既存のサードパーティのWebサービスの代わりにServiceStack Webサービスを使用したいと考えています。サードパーティのサービスで使用されているDTOと一致しました。しかし、クライアントは次のように、「NotificationServiceClient」という名前のプロキシクラスを期待している:ServiceStack SyncReplyクライアントの名前を変更

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

私は、クライアントアプリケーションのソースコードを変更することができませんので、私はクライアントのためにNotificationServiceを使用するようにServiceStackを設定したいと思いますSyncReplyの代わりにプロキシを使用します。これを行う方法はありますか?

UPDATE - 私が探しているのは、wsdl:serviceタグのname属性に異なる値を生成するようにServiceStackを構成する方法です。 SyncReplyからNotificationServiceClientへ現在のWSDLを保存し、手動で操作し、スローアウェイクライアントを使用してプロキシクラス名を確認できます。

答えて

0

mythzのコメントに基づいて、私はAppHostのGenerateWsdlをオーバーライドし、wsdlTemplateのServiceNameプロパティを設定しました。ここに例があります:

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

サードパーティ製のAPIを消費するためにServiceStack's .NET Service Clientsを使用しないでください。これらは、ServiceStackサービスを消費するように設計されています。

第三者APIを呼び出すために推奨する唯一のHTTPクライアントは、私たちの汎用HTMLクライアントであるHTTP Utilsです。

+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

関連する問題