IIS での WCF の展開について学習していて、何か奇妙なことがわかりました。基本的に、web.config で要素の behaviorConfiguration 属性をどのように設定したかに関係なく、私のサービスはデフォルトの動作のみを使用します。
だからここに私のweb.configの関連部分があります:
<system.serviceModel>
<services>
<service name="TableImport" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="" binding="wsHttpBinding" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="false" />
</behavior>
<behavior name="MyServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" policyVersion="Policy15" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
ご覧のとおり、デフォルトの serviceMetadata 要素には httpGetEnabled="false" が含まれていますが、MyServiceTypeBehaviors serviceMetadata 要素には httpGetEnabled="true" が含まれています。サービスの behaviorConfiguration 属性が「MyServiceTypeBehaviors」に設定されていることもわかります。
結果は、サービスがメタデータを公開するはずですが、ブラウザーと Visual Studio の [サービス参照の追加] 機能を使用すると、同じ結果 (メタデータなし) が得られます。
一方、デフォルトの動作でメタデータを有効にし、「MyServiceTypeBehaviors」で無効にし、引き続きサービスで MyServiceTypeBehaviors を使用すると、ブラウザと VS の両方からメタデータを取得できます。
私にとって、これらのテストは、構成ファイルの設定方法に関係なく、サービスがデフォルトの動作を使用していることを示しています...しかし同時に、web.configを介してデフォルトの動作を変更できるため、web.configは実際に影響を与えることができますサービスの仕組み。何か案は?