WCF REST .SVCは直接表示するときにエラーをスローしますが、そうでない場合は機能します
-
28-10-2019 - |
質問
次のように、2つのOperationContractsを備えたWCF RESTサービスがあります。
[OperationContract]
[WebGet(UriTemplate = "ping/")]
Message PingServer();
[OperationContract]
[WebGet(UriTemplate = "files/")]
Message AddFile(string accessKey);
私が訪れるとき http://localhost/rest.svc/ping/ それは正常に動作し、私が訪問した場合 http://localhost/rest.svc/files/ 正常に動作します。
しかし、私が訪問した場合 http://localhost/rest.svc 直接、次のエラーをスローします。
System.InvalidoperationException:WSDLエクスポート拡張の呼び出しで例外がスローされました:System.ServiceModel.Description.DatacontractSerialIzerOperationBehavior契約: http://tempuri.org/:irest ---> System.InvalidOperationException:操作「addfile」は、system.servicemodel.channels.messageまたはmessagecontractattributeを持っているタイプのパラメーターまたはリターンタイプがあるため、ロードできませんでした。 System.ServicEmodel.Channels.MessageまたはMessageContractAttributeを使用して使用する場合、メソッドは他のタイプのパラメーターを使用してはなりません。
私はエラーを理解していますが、それを修正/抑制する方法を疑問に思っていたので、デフォルトのWCFエンドポイントページが表示されます。私は休憩のみにWCFを使用しています。
ありがとう!
ジェフリー・ケビン・プライ
解決
これは、WSDLエンジンがサービスの説明を生成しようとしている問題であり、定義したサービス契約が通常、WSDLエンジンが処理されるRPCスタイルのエンドポイントでは機能しないため、できない問題です。これが、メッセージを入力したパラメーターと混合できないことについて表示されているエラーを取得する理由です。サービスを構成する必要があります <serviceMetadata httpGetEnabled="false" />
WSDLと休息は一緒に遊んでいないからです。
休憩サービスの他の種類の「ヘルプ」ページを期待しているなら、おそらくあなたは <serviceDebug httpHelpPageEnabled="true" />
?
他のヒント
デフォルトの「ヘルプ」ページを設定することで抑制できます HttpHelpPageEnabled
(と HttpsHelpPageEnabled
該当する場合)のプロパティ ServiceDebugBehavior
. 。または構成で、それらのプロパティをに設定します <serviceBehaviors/behavior/serviceDebug>
エレメント。