以下を追加する必要があるWCFサービスがありますReference.svcmap
<NamespaceMappings>
<NamespaceMapping TargetNamespace="http://schemas.datacontract.org/2004/07/System.DirectoryServices"
ClrNamespace="System.DirectoryServices" />
</NamespaceMappings>
その行がない場合、次のエラーが表示されます。
警告 1 カスタム ツールの警告: wsdl:portType をインポートできません 詳細: WSDL インポート拡張機能の実行中に例外がスローされました: System.ServiceModel.Description.DataContractSerializerMessageContractImporter エラー: データ コントラクト名 'DirectoryServicesCOMException' を持つ ISerializable 型 名前空間 'http://schemas.datacontract.org/2004/07/System.DirectoryServices' で インポートできません。データ コントラクト名前空間はカスタマイズできません ISerializable 型と生成された名前空間 「DomainManagement.Console.UserManagementProxy」が必要な CLR と一致しません 名前空間「System.DirectoryServices」。必要な名前空間が設定されているかどうかを確認します 別のデータ コントラクト名前空間にマップされ、それをマップすることを検討してください 名前空間コレクションを明示的に使用します。 エラー ソースへの XPath: //wsdl:definitions[@targetNamespace='http://example.com/v1']/wsdl:portType[@name='IUserManagement']
また、クライアントとサーバー間で共通の DLL を使用することで問題が解決することもわかっていますが、サービスと通信するためにクライアントに付属の DLL も要求する必要はありません。
問題と修正 (dll とファイルの編集の両方) を理解しています。私が知りたいのは、このサービスにサブスクライブするすべてのクライアントがビジュアルスタジオでプロキシを生成した後にサービスの追加構成を必要としないように、ホスト側でできることはありますか? (つまりSvcUtil
、パラメーターの使用と使用は/n:http://schemas.datacontract.org/2004/07/System.DirectoryServices,System.DirectoryServices
推奨オプションではありません)