System.Net.Http.HttpMethodをシリアル化できません.WCF Web API

私は HttpClient ライブラリを使用してWCF Web APIを作成しています。

サービス契約のスニペット:

   [ServiceContract]
    public interface IMyService
    {      
        [WebGet(UriTemplate = "Foo/{id}/{securityKey}/{filename}")]
        HttpResponseMessage Foo(int id, string securityKey);
    }

私がブラウザで.svcを打つと、私はこれを得ています:

System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.DataContractSerializerOperationBehavior contract: http://tempuri.org/:IMyService ----> System.Runtime.Serialization.InvalidDataContractException: Type 'System.Net.Http.HttpMethod' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.

これは誰にも意味がありますか?同じコードが別のプロジェクトで働いていて、すべての図書館はこの場合同じです。私は行方不明です。

1
APIが画像を提供しているので、@DarrelMiller HttpResponseMessage が使用されています。 stackoverflow.com/questions/11125535/… これはWCF APIが使用されているため、Web APIを先行させたレガシーサービスです
追加された 著者 Dan,
あなたは古いWCF RESTスターターキットを偶然使用していませんか? aspnet.codeplex.com/wikipage?title=WCF%20REST Web APIの前身であり、もはやサポートされていません。 webHttpBinding バインディングまたはASP.NET Web APIプロジェクトを使用してRESTベースのWCFサービスを作成しようとしていますか?
追加された 著者 atconway,
私も同じ問題に直面している....いずれの回避策?
追加された 著者 Anil Purswani,
なぜあなたはそれを試してやろうとしますか? HttpResponseMessageは、HTTPレスポンスの抽象化を目的としています。ワイヤでシリアル化されるものではありません。
追加された 著者 Darrel Miller,
あなたはルーティングを好むのでWeb APIの代わりにWCF RESTを使用しようとしていますか? WebAPIのAttributeRouting拡張を見てみましょう。
追加された 著者 Darrel Miller,

1 答え

ストリームを返すようにWCF操作シグネチャを変更します。次に、Content-typeヘッダーを設定してください。これにより、WCF Restのエンドポイントから画像を返すことができます。

1
追加された