4

次のように、2 つの OperationContracts を持つ WCF レスト サービスがあります。

    [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 エンドポイント ページが表示されるように修正/抑制する方法を考えていました。RESTのみにWCFを使用しています。

ありがとう!

ジェフリー・ケビン・プライ

4

2 に答える 2

6

これは、WSDL エンジンがサービスの説明を生成しようとしているときに、定義したサービス コントラクトが WSDL エンジンが処理するように作成された RPC スタイルのエンドポイントに対して通常は機能しないために生成できないという問題です。これが、 Message が型指定されたパラメーターと混合できないというエラーが表示される理由です。<serviceMetadata httpGetEnabled="false" />WSDL と REST は連携しないため、サービスを構成する必要があります。

REST サービスの他の種類の「ヘルプ」ページを期待している場合は、おそらく<serviceDebug httpHelpPageEnabled="true" />?

于 2011-06-16T16:11:49.637 に答える
1

HttpHelpPageEnabledでプロパティ(およびHttpsHelpPageEnabled該当する場合) を false に設定することにより、デフォルトの「ヘルプ」ページを抑制することができますServiceDebugBehavior。または、config で、これらのプロパティを<serviceBehaviors/behavior/serviceDebug>要素に設定します。

于 2011-06-16T16:05:52.163 に答える