Зависит от Вашей системы исходного кода и что еще Вы имеете в распоряжении. Если Вы используете Мерзавца, то фиксируете каждый раз, когда Вы заканчиваете шаг. Я использую SVN, и мне нравится фиксировать, когда я заканчиваю целую функцию, таким образом, все к пяти часам. Если бы я использовал CVS, то я сделал бы то же.
Я думаю, проблема может заключаться в том, что в конфигурации ваш номер имеет только 6 нулей, а в коде - 7 нулей. Может быть?
Может быть, MaxArrayLength - неподходящее свойство.
Попробуйте maxBufferSize и MaxBufferPoolSize:
<bindings>
<netTcpBinding>
<binding name="unsecureNetTcpBinding"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxArrayLength="1000000" />
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
Но реальный вопрос: если у вас большой объем данных , почему вы не используете потоковую передачу WCF ?? Это именно то, для чего он предназначен.
http://www.haveyougotwoods.com/archive/2008/04/14/wcf-message-streaming.aspx
Размеры maxBufferSize и т. Д. Установлены на довольно небольшое значение специально - чтобы избежать атак типа «отказ в обслуживании». Простое повышение их до уровня MaxInt делает ваш сервер уязвимым для этих DOS-атак.
ОБНОВЛЕНИЕ:
Попробуйте сделать следующее:
- создать новое консольное приложение
- добавить ссылки на System.Runtime.Serialization
и System.ServiceModel
- добавьте app.config, который точно содержит конфигурацию вашей клиентской стороны
- поместите эти строки кода в ваше консольное приложение:
class Program
{
static void Main(string[] args)
{
NetTcpBinding binding = new NetTcpBinding("unsecureNetTcpBinding");
int maxArrayLength = binding.ReaderQuotas.MaxArrayLength;
long maxReceivedMessageSize = binding.MaxReceivedMessageSize;
}
}
binding.ReaderQuotas.MaxArrayLength
, «2147483647» для привязки.MaxReceivedMessageSize. WCF распознает и использует эти настройки из конфигурации - гарантия 120%. В вашем приложении должно быть что-то подозрительное ...