この例外は、SOAPリクエストの受信にほぼ3分かかり、サイズが2.25メガバイトである場合に、常にスローされます。
Webを精査しているときに、リクエストにヘッダーを設定することに関するすべての種類の投稿を見つけました。「Expect:」ヘッダーを送信しないようにしたい場合や、「Keep-Alive:」ヘッダーを送信したい場合もありますが、送信するヘッダーに関係なく、依然としてこの厄介なエラーが発生します。 「curl」を使用してまったく同じ要求を再作成でき、最終的に応答は何の問題もなく何の問題もなく返されますなので、ヘッダーを設定することが私の答えであるとは思いません。
ぼくの <httpRuntime maxRequestLength="409600" executionTimeout="900"/>
。
オプションが足りなくなったような気がします。誰かが何か支援を提供できるなら、私は最も感謝しています。注意すべき他のいくつかのことは、私がデータを要求しているサーバーが私の手の届かないところにあり、これらの要求はhttps経由であり、小さな応答を持つ他の要求は完璧に機能します。
ありがとう
投稿に.NET35のタグを付けましたが、WCFを使用していますか?
その場合、大規模なデータセットに使用するApp.configの例を次に示します。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:1602/EndPoint.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding" contract="IEndPointContract" name="EndPoint" behaviorConfiguration="EndpointBehaviour" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="EndpointBehaviour">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
この質問に答えるのが遅すぎないことを願っています。
コントラクトインターフェイスの定義に次の属性を追加してみてください。
[ServiceKnownType(typeof(ReturnClass))]
ポリモーフィッククラスを返すことができるより一般的なソリューションについては、この投稿を参照してください: http://www.goeleven.com/blog/entryDetail.aspx?entry=45
Edmxの代わりにdbmlを使用している場合、これが表示されます(基になる接続が閉じられました:接続が予期せず閉じられました)。 。
私は同じ問題を抱えており、詳細な調査の結果、この記事を見つけました。
これはすべて、クライアントとサーバーの両方の「dataContractSerializer」の設定に関連していました。これがお役に立てば幸いです。
私のdatatransfereobjectsが再帰的に相互に参照しているため、このエラーが発生しました。
例えば:
顧客->(ある)->レーティングレーティング->(所属)->顧客
したがって、サイクルを削除する必要があります。
[DataContract]
public class Rating
{
private Customer _customer;
//[DataMember] // <- EITHER HERE
public Customer Customer
{
get { return _customer; }
set { _customer = value; }
}
}
[DataContract]
public class Customer
{
private long _customerID;
[DataMember]
public long CustomerID
{
get { return _customerID; }
set { _customerID = value; }
}
[DataMember] // <- OR HERE
public Rating Rating
{
get { return _rating; }
set { _rating = value; }
}
}
私がこの解決策を見つけるまで、このエラーメッセージを取り除くためにいくつかの方法を試しました: http://kiranpatils.wordpress.com/2008/09/22/the-underlying-connection-was-closed-the-connection- was-closed-unexpectedly-while-returning-data-table-from-wcf-service /
List <>をDataSetに変更できます。 DataSetはList <>よりも大量のデータを処理できると思います。
それが役に立てば幸い。
このブログ投稿 の提案を試しましたか?問題は、おそらく.NETのTCP/HTTPスタック実装にあります。
別のフィールドを追加しましたが、プロパティにセットがありませんでした。それが同じエラーの私の解決策でした。
[DataMember]
public bool HasValue
{
get { return true; }
set { }//adding this line made the solution.
}
これは、内部エラーが発生した場合に発生する一般的なエラーです。
ここにトレースを追加してみてください: http://msdn.Microsoft.com/en-us/library/ms732023(v = vs.110).aspx
その後、完全なログが表示されます。
EFを使用するWCFの場合、次のコードをコンテキストクラスに追加するだけです。
base.Configuration.ProxyCreationEnabled = false;