質問

Visual Studio のクライアント プロジェクトが、mex バインディングを持たない WCF サービスをどのように参照できるのか疑問に思っていました。サンプル WCF サービスでデフォルトの mex バインディングを削除すると、クライアント アプリはサービスを見つけることができなくなり、自動生成されたコメントで、運用環境では mex バインディングを削除することが推奨されます。では、クライアント アプリはどのようにしてサービスを見つけて参照すればよいのでしょうか?

役に立ちましたか?

解決

mex エンドポイントは、WCF SOAP サービスの必要な部分です。これにより、クライアント ツールキットが WSDL をプルダウンし、プロキシ クラスを自動生成できるようになります。ご指摘のとおり、それがなければ、クライアントはサービスを利用するための情報を取得することができません。クライアントがサービスを利用して見つけられるようにしたい場合は、サービスが運用中にサービスを利用可能な状態にしておく必要があります。

他のヒント

サービス コントラクト、操作、データ コントラクトを定義する型を含むアセンブリにアクセスできる場合は、次を使用してオンザフライでプロキシを作成することができます。 ChannelFactory. 。この場合、サービスを呼び出すために必要なすべての情報にすでにアクセスできるため、サービスのメタデータを取得する必要はありません。

例えば

// Create service proxy on the fly
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile");
var proxy = factory.CreateChannel();

// Create data contract
var requestDataContract = new MyDataContract();

// Call service operation.
var responseDataContract = proxy.MyServiceOperation(requestDataContract);

また、サービス側の構成ファイルにアクセスできる場合は、そこからエンドポイントの詳細をクライアント構成にコピーできる場合にも役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top