十分な操作量 (~ 40 操作) のサービス契約を結んでいます。クライアント プロジェクト (またはWCF Test Clientから) からサービス参照を追加しようとすると、エラーが発生します。
エラー: net.tcp://localhost:12345/DataProvider/mex からメタデータを取得できません これがアクセス権を持つ Windows (R) Communication Foundation サービスである場合は、指定されたアドレスでのメタデータ公開が有効になっていることを確認してください。メタデータの公開を有効にする方法については、MSDN のドキュメント ( http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: net.tcp://localhost:12345/DataProvider/mex ) を参照してください。メタデータに解決できない参照が含まれています: 'net.tcp://localhost:12345/DataProvider/mex'。XML ドキュメントにエラーがあります。「type」属性の値が無効です - 「q2:PersonFilter」は「type」属性の無効な値です。
ここから始まる奇妙な動作:何もせず、サービス操作の1 つだけを削除すると、すべてがうまくいきます。サービス参照の追加は非常にうまく機能します。もちろん、これらの〜40のすべてのメソッドを削除しようとしたわけではありませんが、〜5を試しました。もう 1 つの重要な点PersonFilter
- (エラー メッセージに表示されている型)で動作するメソッドを削除しませんでした。
これを修正する方法がわかりません。さらに情報が必要な場合は、お知らせください。
更新 #1
だから、デフォルトのクォータを増やすためにmexカスタムバインディングを設定しようとしました:
<customBinding>
<binding name="mexBinding">
<binaryMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binaryMessageEncoding>
<tcpTransport transferMode="Buffered" maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647" />
</binding>
</customBinding>
と
<service name="MyNamespace.DataService" behaviorConfiguration="myServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:12345/DataProvider/" />
</baseAddresses>
</host>
<endpoint binding="netTcpBinding" bindingConfiguration="NetTcpBinding"
contract="MyNamespace.IDataService" />
<endpoint address="mex" binding="customBinding" bindingConfiguration="mexBinding"
name="tcp" contract="IMetadataExchange" />
</service>
しかし、それは役に立ちません - 同じエラーがまだ発生しています。
更新 #2
ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)を使用して、次の 3 つのソースからメタデータを取得しようとしました。
- HTTP ホスト
- TCP ホスト
- 直接組み立て
ソース 1. と 3. については、すべて問題ありません。メタデータを取得してクライアント コードを生成することはできますが、svcutil
TCP ホスト経由で呼び出すと、次のようになります。
Microsoft (R) Service Model Metadata Tool [Microsoft (R) Windows (R) Communication Foundation、バージョン 4.0.30319.1] Copyright (c) Microsoft Corporation. 全著作権所有。
WS-Metadata Exchange を使用して、'net.tcp://localhost:12345/DataProvider/mex' からメタデータをダウンロードしようとしています。この URL は DISCO をサポートしていません。
Microsoft (R) Service Model Metadata Tool [Microsoft (R) Windows (R) Communication Foundation、バージョン 4.0.30319.1] Copyright (c) Microsoft Corporation. 全著作権所有。
エラー: net.tcp://localhost:12345/DataProvider/mex からメタデータを取得できません
これがアクセス権を持つ Windows (R) Communication Foundation サービスである場合は、指定されたアドレスでのメタデータ公開が有効になっていることを確認してください。メタデータの公開を有効にする方法については、MSDN のドキュメント ( http://go.microsoft.com/fwlink/?LinkId=65455 ) を参照してください。
WS-Metadata Exchange エラー URI: net.tcp://localhost:12345/DataProvider/mex
Metadata contains a reference that cannot be resolved: 'net.tcp://12345/DataProvider/Management/mex'. There is an error in the XML document. The value for the 'type' attribute is invalid - 'q2:PersonFilter' is an invalid value for the 'type' attribute.
さらにヘルプが必要な場合は、「svcutil /?」と入力してください。
wcf サービスまたはその構成の何が問題なのか、まだわかりません。