私は WCF サービスを持っています。MSTest プロジェクトから参照を作成しました。サービスメソッドを呼び出す方法の例を次に示します。
IEnrollmentService serviceClient = ChannelFactory<IEnrollmentService>
.CreateChannel(new BasicHttpBinding(),
new EndpointAddress("http://localhost/EnrollmentService.svc"));
PublishResult res = serviceClient.PublishEnrollmentProfile(...);
実行する代わりに、次のエラーが発生しました。
コンテンツ タイプ application/xml。応答メッセージの charset=utf-8 がバインディングのコンテンツ タイプ (text/xml; charset=utf-8) と一致しません。カスタム エンコーダーを使用する場合は、IsContentTypeSupported メソッドが適切に実装されていることを確認してください。応答の最初の 710 バイトは次のとおりです。
Sendera:ActionNotSupported
アクション '' のメッセージは、EndpointDispatcher での ContractFilter の不一致により、受信側で処理できません。これは、コントラクトの不一致 (送信者と受信者の間のアクションの不一致) または送信者と受信者の間のバインディング/セキュリティの不一致が原因である可能性があります。送信者と受信者が同じコントラクトと同じバインディング (メッセージ、トランスポート、なしなどのセキュリティ要件を含む) を持っていることを確認してください。---> System.Net.WebException: リモート サーバーがエラーを返しました: (500) 内部サーバー エラー..
私が理解している限りでは、ContractFilter と EndpointDispatcher の間にはいくつかの問題があります。私はググろうとしましたが、理解できるものは何も見つかりませんでした...
また、別の方法で wcf サービス メソッドを呼び出そうとしました。
EnrollmentServiceClient serviceClient = new EnrollmentServiceClient("http://localhost/EnrollmentService.svc");
PublishResult res = serviceClient.PublishEnrollmentProfile(...);
それは私に別のエラーを返します:
ServiceModel クライアント構成セクションで、名前が ' http://localhost/McActivation/EnrollmentService.svc ' でコントラクトが 'EnrollmentServiceReference.IEnrollmentService' のエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、この名前に一致するエンドポイント要素が client 要素に見つからなかったためである可能性があります。
質問1:
wcfサービスクライアントをインスタンス化する正しい方法は何ですか?
質問 2:
私の場合、何が問題なのですか?
どうもありがとう。
PS WcfTestClient を使用してサービスに接続できる問題がいくつかあります。詳細は次のとおりです。 WCF サービス: 'WebHttpBinding' エンドポイントを介してメソッドを呼び出すことはできません
PPS サーバー側の WCF サービス構成は次のとおりです。
<system.serviceModel>
<services>
<service name="McActivationApp.EnrollmentService" behaviorConfiguration="McActivationApp.EnrollmentServicBehavior">
<endpoint address="" binding="webHttpBinding" contract="McActivationApp.IEnrollmentService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="McActivationApp.IEnrollmentService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="McActivationApp.EnrollmentServicBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>