WCF REST .SVCは直接表示するときにエラーをスローしますが、そうでない場合は機能します

StackOverflow https://stackoverflow.com/questions/6374733

質問

次のように、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> エレメント。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top