方法 : 未登録で Windows Communication Foundation のサービス モニカを使用する
Windows Communication Foundation (WCF) サービスに接続して通信するには、WCF クライアント アプリケーションに、サービス アドレス、バインディング構成、およびサービス コントラクトの詳細が必要です。
WCF サービス モニカは通常、必要な属性型の前の登録から必要なコントラクトを取得しますが、これが適切でない場合もあります。登録の代わりに、モニカは、wsdl パラメータまたは Metadata Exchange を使用し、mexAddress パラメータを使用することによって、WSDL (Web Services Definition Language) ドキュメントの形でコントラクトの定義を取得できます。
これによって、セルの値の一部が Web サービスとの対話によって計算される Excel ワークシートの配布などのシナリオが可能になります。このシナリオでは、ドキュメントを開く可能性があるすべてのクライアントにサービス コントラクト アセンブリを登録することが実現できない可能性があります。wsdl パラメータまたは mexAddress パラメータによって、自己完結型のソリューションが可能になります。
![]() |
---|
要求と応答の改ざんまたはなりすましを防止するために、相互認証を使用する必要があります。具体的には、応答している Metadata Exchange エンドポイントが目的の信頼されたパーティであることがクライアントに対して保証されることが重要です。 |
例
MEX コントラクトと共にサービス モニカを使用する例を次に示します。次のコントラクトが設定されたサービスは、wsHttpBinding で公開されます。
using System.ServiceModel;
...
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Demo")]
public interface IAffiliate
{
[OperationContract]
bool NewAffiliate(string ID, string company, string fullname, string accountsCode);
[OperationContract]
bool RemoveAffiliate(string ID);
[OperationContract]
double RevenueCheckMonthly(ref string ID);
[OperationContract]
double RevenueCheckTotal(ref string ID);
}
リモート サービスに WCF クライアントを作成するとき、次の例に示すモニカの文字列を使用できます。
service:mexAddress="https://servername/Affiliates/service.svc/mex",
address="https://servername/Affiliates/service.svc",
contract=IAffiliate, contractNamespace=http://Microsoft.ServiceModel.Demo,
binding=WSHttpBinding_IAffiliate, bindingNamespace=http://tempuri.org/
クライアント アプリケーションの実行中に、クライアントは、指定された mexAddress で WS-MetadataExchange を実行します。これによって、複数のサービスのアドレス、バインディング、およびコントラクトの詳細が返される可能性があります。address、contract、contractNamespace、binding、および bindingNamespace の各パラメータは、目的のサービスを識別するために使用されます。このパラメータが一致した場合、モニカは、適切なコントラクト定義を使用して WCF クライアントを作成します。これによって、型指定されたコントラクトと同様、WCF クライアントを使用して呼び出しを実行できるようになります。
![]() |
---|
モニカの形式が正しくないか、サービスを使用できない場合は、GetObject を呼び出すと、"構文が無効です" というエラーが返されます。このエラーを受信した場合は、使用しているモニカが正しく、サービスが使用可能であることを確認してください。 |