1

MEX と WSDL は、メタデータを公開する 2 つの異なる方法であると理解しています。クライアントがどちらかを選択できるようにするために、両方を有効にしたいと考えています。しかし、その方法は完全にはわかりません。

私のwebconfigには次のものが含まれています:

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

それをブラウズすると、そのデフォルトのページが表示され、serviceblahblah?wsdl へのリンクが表示されます。これは、WSDL だけを公開していることを示唆しています。

私の質問は、これは MEX を使用していますか? そうでない場合、MEX も公開するにはどうすればよいですか? また、両方を公開する必要がありますか?

それが違いを生む場合、私はbasichttpsbindingを使用しています。

4

1 に答える 1

5

それをブラウズすると、そのデフォルトのページが表示され、serviceblahblah?wsdl へのリンクが表示されます。これは、WSDL だけを公開していることを示唆しています。

いいえ、WSDLにアクセスしているだけです。その URL には他に何が表示されると思いますか? ;-)

このhttpGetEnabled属性により、WSDL メタデータの公開が可能になります。mexHttpBindingドキュメントとGetting Startedに示されているように、MEX を公開する場合は、アクセスできる MEX エンドポイントも公開する必要があります。

<!-- the mex endpoint is explosed[sic] at         
http://localhost/servicemodelsamples/service.svc/mex -->

<endpoint address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />

/mexクライアントは、サービスを検出すると、最初にエンドポイントを呼び出そうとします。見つからない場合は、WSDL を要求します。Visual Studio で [サービス参照の追加] をクリックし、プレーンなサービス URL を入力すると、 Fiddlerを使用してこれを確認できます。この動作はどこかに文書化されているはずです。

于 2013-06-07T08:48:24.313 に答える