4

WCF テスト クライアントに問題があります。次のエラーが発生し続けるため、WebService に接続できません。

エラー: http://xxx.xxxxxxxx.xxx/DPITerminal.svcからメタデータを取得できません。 これがアクセス権のある Windows (R) Communication Foundation サービスである場合は、指定されたアドレスでのメタデータ公開が有効になっていることを確認してください。メタデータの公開を有効にする方法については、http: //go.microsoft.com/fwlink/ ?LinkId=65455.WS-Metadata Exchange Error URI: http://xxx.xxxxxxxx.xxx/DPITerminal.svcにある MSDN ドキュメントを参照して ください。
メタデータに解決できない参照が含まれています: 'http://xxx.xxxxxxxx.xxx/DPITerminal.svc'。コンテンツ タイプ application/soap+xml; charset=utf-8 はサービス http://xxx.xxxxxxxx.xxx/DPITerminal.svcでサポートされていませんでした. クライアントとサービスのバインディングが一致していない可能性があります。リモート サーバーがエラーを返しました: (415) コンテンツ タイプが 'application/soap+xml; であるため、メッセージを処理できません。charset=utf-8' は予期されたタイプの 'text/xml ではありませんでした。charset=utf-8'..HTTP GET エラー URI: http://xxx.xxxxxxxx.xxx/DPITerminal.svc 「http://xxx.xxxxxxxx.xxx/DPITerminal.svc」のダウンロード中にエラーが発生しました。

これが私の Web.Config: Linkです。

ご覧のとおり、私はすでに

<serviceMetadata httpGetEnabled="true" /> 

としても

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

他の StackOverflow の質問で提案されているように。それでもうまくいきません。

次のエンドポイントにコメントすると、次のことにも気付きました。

<endpoint address="x" behaviorConfiguration="poxBehavior" binding="webHttpBinding" bindingConfiguration="web" contract="xxx.xxxxxxxx.xxxxxx.WebService.IDPITerminal" />

すべてが期待どおりに機能します。XML エンドポイントに問題があると思いますか? XML エンドポイントが JSON エンドポイントのバインディング構成を共有しており、JSON エンドポイントには問題がないため、これは奇妙です。

また、私が問題を抱えているのは WCF テスト クライアントだけであることを明確にさせてください。JSON と XML エンドポイントはどちらも正常に動作しています。

編集:

XML エンドポイントにコメントを付けて公開し、WCF テスト クライアント経由で接続しようとしました。次に、XML エンドポイントのコメントを外して、再公開します。WCF テスト クライアントは引き続き動作します。つまり、データを送受信できます。サービスを更新すると、メタデータを取得できませんというエラーが再び表示されました。

4

1 に答える 1

4

WCF では、2 つのエンドポイントに同じ構成を使用することは許可されていないようです。

この問題を解決するための回避策があります。

  1. bindingConfigurationエンドポイントの属性をaddress="x"からwebに変更web2
  2. 新しい web2 構成を追加しwebHttpBindingます (Web 構成をコピーします):

新しいバインディング構成のコード:

<webHttpBinding>
    <binding name="web" ... />
    <binding name="web2" closeTimeout="00:10:00" openTimeout="00:10:00"
         sendTimeout="00:10:00" allowCookies="true" maxBufferSize="2147483647"
         maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
         <readerQuotas maxDepth="64" maxStringContentLength="2147483647"
            maxArrayLength="8192" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    </binding>
</webHttpBinding>

アップデート:

メタデータが存在しないため、WCF テスト クライアントはメタデータを取得できwebHttpBindingません。basicHttpBindingRESTfull サービスは、またはで使用される WSDL または類似のプロトコルをサポートしていませんwsHttpBinding。WCF テスト クライアントが両方のケース (WCF テスト クライアントが失敗した場合とそうでない場合) でメタデータを取得しようとすると、サービスはエラーを返しますが、何らかの理由で提案された回避策の場合、WCF テスト クライアントはエラーを飲み込むことができます。WCF テスト クライアントのソース コードがなければ、その理由を説明するのは困難です。

トレース ビューアのエラー:

ここに画像の説明を入力

于 2012-07-28T20:44:28.363 に答える