FaultedException в WCF, когда размер сообщения большой

У меня есть служба WCF и простая страница aspx, которая получает сообщение из одного консольного приложения и отправляет его в другое консольное приложение. Когда длина сообщения (в формате xml) составляет около 6000000, он работает нормально, однако, когда размер сообщения удваивается, он перестает выдавать следующее исключение

"Объект связи, System.ServiceModel.Channels.ServiceChannel, нельзя использовать для связи, поскольку он находится в состоянии Failed".

Я отслеживал его, и мое приложение отправителя отправляет сообщение, моя страница.aspx получает его, возникает исключение при отправке его в мое приложение получателя. Вот код

public void SendMessage(string message)
{
    try
    {
         using (Receiver rec = new Receiver())
         {
              rec.SetMessage(message);
         }
    }
    catch (Exception e)
    { 
         Response.Write(e.Message);
         Response.Write(e.StackTrace);
    }
}

Я попробовал кучу настроек конфига, но никто не решил проблему. В чем может быть причина?

Заранее спасибо.

1 ответ

Это просто. Когда размер сообщения превышает допустимый размер, например 6000000, он вызывает исключение FaultException. Поскольку FaultException расширен от Exception, он корректно перехватывается в вашем коде. Я не вижу в этом никакой проблемы, а не факта, что если ваши данные большие, увеличьте также ограничение размера.

ОБНОВЛЕНИЕ: Для получения максимальной полученной ошибки необходимо сделать следующее: Квота максимального размера сообщения для входящих сообщений (65536) .... Чтобы увеличить квоту, используйте MaxReceivedMessageSize имущество

Или из кода:

WebHttpBinding binding = new WebHttpBinding();
binding.MaxReceivedMessageSize = 2147483647;

Точно так же и на стороне клиента.

Другие вопросы по тегам