私はEFと組み合わせてWCFで遊んでいて、コレクションの送信で問題が発生しました。
私は2つのソリューションで構成される遊び場で作業していますが、回線を介して通信するために必要な最低限のことです。2つの間で文字列を送信することは問題なく機能し、クライアントを介してデータベースにレコードを追加することも問題なく機能します。ただし、私のサービスは次の契約を公開しています。
[OperationContract]
IEnumerable<Company> GetAllCompanies();
次のような私のサービスに実装されています:
public IEnumerable<Company> GetAllCompanies()
{
using (var ctx = new InleerAppContext())
{
return ctx.Company.ToList();
}
}
異常なことは何もありません。オブジェクトの送信は正常に機能しているように見えたので、これも機能すると予想していました。ただし、クライアントからGetAllCompanies()を呼び出す場合:
var result2 = service.GetAllCompanies();
foreach (Company c in result2)
{
Console.WriteLine(c.Name);
}
CommunicationExceptionがスローされます:
http:// localhost:8080/へのHTTP応答の受信中にエラーが発生しました 。これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります。これは、サーバーによってHTTP要求コンテキストが中止されたことが原因である可能性もあります(おそらくサービスのシャットダウンが原因です)。詳細については、サーバーログを参照してください。
いくつかの詳細情報:
System.Net.HttpWebRequest.GetResponse()
でSystem.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpanタイムアウト)で
カスタムバインディング構成(両側のbasicHttpBinding)を使用して、クライアントとサーバーの両方でタイムアウトを30分に変更しました。
<bindings>
<basicHttpBinding>
<binding name="longTimeoutBasicHttpBinding"
receiveTimeout="00:30:00"
sendTimeout="00:30:00">
</binding>
</basicHttpBinding>
</bindings>
ここで何が欠けていますか?