初期化するために拡張されたクラスを使用して、WCF サービスにカスタム エンドポイント動作を追加してBehaviorExtensionElement
います。私のweb.config
では、次を追加して動作拡張を登録します。
<system.serviceModel>
<services>
<service name="Service.MyService">
<endpoint address=""
behaviorConfiguration="endpointBehavior"
binding="basicHttpBinding"
contract="Contracts.IMyService"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="endpointBehavior">
<logBehavior />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="logBehavior"
type="MyNamespace.MyBehaviorExtensionElement, MyAssembly, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
これはまったく問題なく動作しますが、アセンブリをロードするには、アセンブリのバージョンを指定する必要があります。MyNamespace.MyBehaviorExtensionElement, MyAssembly
バージョン/カルチャ/トークンなしでアセンブリ参照を変更すると、サービスは次のエラーで起動に失敗します。
説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下の特定のエラーの詳細を確認し、構成ファイルを適切に変更してください。
パーサー エラー メッセージ: system.serviceModel/behaviors の構成セクション ハンドラーの作成中にエラーが発生しました: 拡張要素 'logBehavior' をこの要素に追加できません。拡張機能が、system.serviceModel/extensions/behaviorExtensions の拡張コレクションに登録されていることを確認します。パラメータ名:要素
アセンブリ バージョンの最終部分は、ビルド プロセスの一環として頻繁に変更されます。web.config
ビルド バージョンがインクリメントされるたびに (数百回になる可能性があります)、新しいバージョン番号で を更新し続ける必要がないようにするにはどうすればよいですか?