問題タブ [servicecontract]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wcf - System.Exception.Data は DataContract でシリアル化されませんか?
dataContracts を使用する WCF サービスがいくつかあり、Data プロパティでカスタム Dictionary< string , object > data を使用して例外を渡したいと思っていましたが、スローする前にこの配列にデータを追加すると、次のエラーが表示されますカスタム ServiceBehavior の ErrorHandler:
データ コントラクト名 'ArrayOfKeyValueOfanyTypeanyType:http://schemas.microsoft.com/2003/10/Serialization/Arrays' は想定されていません。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加することにより、静的に認識されていない型を既知の型のリストに追加します。
DataContract として注釈が付けられた Dictionary プロパティを使用してカスタム例外を常に作成し、それをスローする必要がありますか? ErrorHandler を使用するという考えは、各サービス メソッドで例外を処理することを回避することですが、メソッドにさらに注釈を追加する必要がありますか? 私は何が欠けていますか?
参考までに、これは私の FaultErrorHandler クラスです。
私の典型的なサービスインターフェースは次のようになります:
wcf - サービス コントラクトを実装するクラス 別のクラス WCF の基本クラス
サービス コントラクトを実装するクラスがあります。このクラスから派生し、別のサービス コントラクトを実装する別のクラス
コントラクト IB のエンドポイントを公開するにはどうすればよいですか?
私が試したエンドポイント:
これを行うと、エラーが発生します
サービス 'B' は複数の ServiceContract タイプを実装しており、構成ファイルでエンドポイントが定義されていません。WebServiceHost は既定のエンドポイントを設定できますが、サービスが単一の ServiceContract のみを実装している場合に限ります。単一の ServiceContract のみを実装するようにサービスを変更するか、構成ファイルで明示的にサービスのエンドポイントを定義してください。
前もって感謝します。
編集
上記の構成にタイプミスがありました。
これに使用しているテンプレートは WCF Rest テンプレート 4.0 です (違いがある場合)
c# - ServiceHostのサービスタイプをプログラムで検出する
G'day、
私はMSDNとここを検索しようとしましたが、これはできないと思います。
への参照が与えられた場合、ServiceHost
それが実行しているホストのタイプを発見することは可能ですか?
何かのようなもの
MagicCallHereは存在しますか?
反射をかわすことができればボーナスマーク...
wcf - WCF ServiceContract 名前空間の更新
次の WCF インターフェイスがあります。
私はこれに変更しました:
ターゲット XML 名前空間がデフォルトの tempuri.org から user.com に変更されました
これにより、wsdl が異なるため、既存のクライアントの呼び出しが中断されます。
構成ファイルでこの名前空間を指定する方法はありますか? これにより、既存のクライアントの古い名前空間を保持し、WS をアップグレードできるようになります。
wcf - すべての datacontract クラスを生成する方法
WCFでチャットサービスを構築しました。datacontract 属性としてマークされたクラスがあります
そして、私のサービス契約は以下のようなものです
VisualStudio 2010 からクライアント コードを生成しようとすると、クラス メッセージが生成されません。しかし、サービス コントラクトのメソッド "Whisper" のパラメーター "message" のタイプを文字列ではなくメッセージに変更すると生成されました。
パラメータ メッセージのタイプを「文字列」ではなく「メッセージ」に変更します。
Message クラスが正しく動作する必要があるコールバック クラスがあります。
そして問題は、サービス コントラクトのメソッド パラメータまたは戻り値に含まれていない場合に、datacontract 属性としてマークされたクラスが生成されない理由です。
c# - WCF サービスで利用可能なサービス コントラクト インターフェイスの 1 つのみに対してクライアントを生成します。
私は現在、複数の異なるクライアント アプリケーションで使用される 1 つのサービス コントラクト インターフェイス (以降「SCI」) で構成される大規模な WCF サービスをリファクタリングしています。クライアント アプリケーションの種類ごとに、必要な操作に固有の SCI が存在するように、SCI を分割しました。SCI の一部の共有セクションは、クライアント アプリケーション固有の SCI が継承する基本 SCI で定義されます。
すべてのクライアント固有の SCI を実装する単一のサービス クラスがあります。共有ベース SCI からのダイアモンド インターフェイス継承状況があるという事実は、場合によっては、同じ操作が複数の SCI を介して利用可能であることを意味します。クライアントを自動生成する場合 (特に非同期クライアント メソッドを使用する場合)、結果のコードには多くの醜いものがあり<generated-type>1,2,3
ます...
これを回避するために、特定のアプリケーションに関連する SCI のクライアントのみを生成するサービス参照を各クライアント アプリケーションに追加したいと考えています。同じ機能が異なる SCI に表示されるため、問題は発生しません。
これは可能ですか?
この状況でモジュール性とコードの再利用の両方を達成するための他のヒントもいただければ幸いです。
wcf - WCFサービスが抽象クラスではなくサービスコントラクトとしてインターフェイスを使用するのはなぜですか?
これは私がインタビューで尋ねられた質問です。
WCFサービスを作成すると、2つのファイルが取得されます。「IService.cs」および「Service.cs」。抽象クラスを継承するクラスに対して、インターフェイスを実装するクラスであるのはなぜですか。抽象クラスに[servicecontract]属性を設定することはできないと言って返信しないでください。インターフェイスにしか適用できないことは知っていますが、なぜですか?
wcf - WCF - コントラクトのバージョン管理 (例による)
これは、サービス/データ コントラクトのバージョン管理のベスト プラクティスに精通しているユーザーにとっては簡単です。このバージョニングを正しい方法で使用することを確認したいと思います。
では、サービス コントラクトがあるとします。
およびデータ コントラクト:
後者を別のものに変更する必要がある場合: (以下は単なる例です)
...では、サービスから DTOCustomer1 の代わりに DTOCustomer2 を使用して、古いクライアントと新しいクライアントが準拠するようにするにはどうすればよいでしょうか? この場合、何が推奨されますか?サービス契約は変更されますか? 私の知る限り、サービス契約を変更する必要はありません。サービス契約はどのようになりますか? 新しいエンドポイントが必要ですか? 新しいデータ コントラクトを使用する新しい操作コントラクトが必要ですか?
EDIT1: 単に変更する
bool AddCustomer(DTOCustomer1 顧客);
の中へ
bool AddCustomer(DTOCustomer2 顧客);
しましょう?
EDIT2: DTOCustomer2 の名前空間は異なるため、EDIT1 への回答はNoですが、名前空間が同じであれば機能する可能性があります。それでも、ここで何が最善なのかはわかりません。誰かが良い答えを出してくれることを期待しています.
前もって感謝します!
wcf - サービスによって実装された WCF コントラクトを取得する
WCF ホストが公開するコントラクトのリストをクライアントとして取得する可能性はありますか?
サービスにクエリを実行し、それが実装するインターフェイスを確認したいと思います。
wcf - ServiceModel クライアント構成セクションで、名前が ' でコントラクトが 'I' のエンドポイント要素が見つかりませんでした。
次のように、ベース WCF サービス - クライアント WCF サービス - コンシューマー ベース WCF サービス モデルに取り組んでいます。
このモデルでは、ベース WCF サービスを作成し、1 つの WCF サービスを作成しました。ClientWCFService と 1 つの ASMX サービス。BaseWCFServiceProxy.cs を使用する ClientASMXservice SVCUtil.exe を使用するベース WCF サービスのプロキシ クラス。
ClientWCFService と ClientASMXservice はスタンドアロン環境で正常に動作しています。次に、同じプロキシ クラス BaseWCFServiceProxy.cs を使用してコンシューマー コンソール アプリケーションを作成し、BaseWcfService クラスを使用して ClientWCFService と ClientASMXservice の両方にアクセスします。
OOP ルールに従って、BaseWcfService クラスは ClientWCFService および ClientASMXservice の基本クラスであり、基本サービス クラス コンストラクターを使用してこれらのサービスにアクセスできます。
サービス呼び出しは次のとおりです。
クライアントASMXサービス用
コンシューマー コンソール アプリケーションは正常に構築されていますが、実行時に ModelWCFServiceContractClient オブジェクトを初期化するときに、次のようにInvalidOperation 例外がスローされます。
ServiceModel クライアント構成セクションで、名前が 'IModelWcfServiceContract' でコントラクトが 'IModelWcfServiceContract' のエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、この名前に一致するエンドポイント要素が client 要素に見つからなかったためである可能性があります。
この問題を解決するために、サービスの種類ごとに異なるエンドポイントを使用しようとしましたが、成功しませんでした。
より迅速な対応が評価されます。また、スペル ミスをクリアすることによって生成されるアラートを読む時間が無駄になるため、スペル ミスをクリアするだけで私を助けないでください。時間は私にとって重要です..
ありがとう