私のWCFサービスからDTOオブジェクトでデータを転送しています。ここで受信メッセージ(400000)の最大メッセージサイズの制限を超えました
はDTOオブジェクトです:
[DataContract]
public class MatrixDTO : BaseDTO<MatrixDTO, Matrix>
{
[DataMember]
public int MatrixID { get; set; }
[DataMember]
public int OriginStopID { get; set; }
[DataMember]
public string OriginStopCode { get; set; }
[DataMember]
public int DestinationStopID { get; set; }
[DataMember]
public string DestinationStopCode { get; set; }
[DataMember]
public int NumberOfDays { get; set; }
}
私はサービスによって返さ正確に2116アイテムを持って知っています。ここでは、一般的な情報が返されます。
をあなたが見ることができるように、多くのデータが返される各項目にはありません。しかし、なぜ私は750000バイトを許可するために私のweb.configバインディングバッファを調整する必要があるのかわかりません!ここで
は私web.condfigです:ここでは
<binding name="WSHttpBinding_IRequestService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="750000" maxReceivedMessageSize="750000" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
は私のサービスです。
public List<MatrixDTO> GetMatrices()
{
using (var unitOfWork = UnitOfWorkFactory.Create())
{
var matrixRepository = unitOfWork.Create<Matrix>();
var matrices = matrixRepository.GetAll();
var dto = new List<MatrixDTO>();
AutoMapper.Mapper.Map(matrices, dto);
return dto;
}
}
誰かが私を説明することができますか?バッファを750000から400000に減らすと、エラーが発生します。受信メッセージ(400000)の最大メッセージサイズのクォータを超えました。クォータを増やすには、適切なバインディング要素でMaxReceivedMessageSizeプロパティを使用します。
私はWCFログファイルをトレースして、私のWCFから送信されたデータが約721Kであることを発見しました。 20文字未満の約2116項目について、それほど多くのデータを送信することは可能ですか?
+1。別のエンコーディングを試すこともできます。標準のものを除いて、バイナリエンコーディングはサイズに最適です。 http://msdn.microsoft.com/en-us/library/aa751889.aspxを参照してください。また、有料の場合は、Noemax FastInfosetはさらにコンパクトです。 http://www.noemax.com/products/fastinfoset/size_comparisons.htmlを参照してください。 –