WebApiContrib.Formatting.ProtoBuf NuGet パッケージ ( http://nuget.org/packages/WebApiContrib.Formatting.ProtoBuf/0.9.5.0 ) を使用して、Web API プロジェクトにプロトコル バッファーのサポートを追加しています。
サーバー側はうまく機能しているようですが、Web API クライアント ライブラリでサーバーの応答を逆シリアル化することができませんでした。
System.InvalidOperationException: Type is not expected, and no contract can be inferred: System.Collections.Generic.IEnumerable`1[[WebAPITest1.Protocol.Messages.Product, WebAPITest1.Protocol.Messages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
ここに私のクライアントコードがあります:
var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(@"http://localhost:60500/");
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-protobuf"));
var response = httpClient.GetAsync("/api/products?$orderby=Name").Result;
Assert.IsTrue(response.IsSuccessStatusCode);
var products = response.Content.ReadAsAsync<IEnumerable<Product>>(new[]{new ProtoBufFormatter()}).Result;
Assert.IsTrue(products.Count() > 0);
アイデア?