статический ChannelFactory в Global.asax.cs создает исключение CommunicationObjectFaptedException - PullRequest
0 голосов
/ 21 июля 2010

Я использую следующий код в моем файле Global.asax.cs:

public static readonly IMyCommunicationService GlobalCommunicationChannel =
        new ChannelFactory<IMyCommunicationService>("NetTcpBinding_IMyCommunicationService").CreateChannel();

С каждого веб-сайта я обращаюсь к статической переменной "GlobalCommunicationChannel".

Это работает оченьну пока.Но иногда в производственной среде я получаю CommunicationObjectFaptedException .В нем говорится, что я не могу использовать свой объект GlobalCommunicationChannel, так как объект "System.ServiceModel.Channels.ServiceChannel" находится в состоянии с ошибкой .

Я не получаю больше информации, чем эта. Через несколько минут он снова работает .Не знаю почему.Я думаю, что соединение восстанавливается или что-то в этом роде.

Чем вызвана эта ошибка?
Есть ли способ избежать этой ошибки в будущем без добавления повтора / повтора и повтора повсюду?

Большое спасибо заранее за ответ!

1 Ответ

0 голосов
/ 21 июля 2010

Проверьте значение SessionMode:

По умолчанию значение этого свойства Разрешено, что означает, что если клиент использует привязку на основе сеанса с реализацией службы WCF, Сервис устанавливает и использует сессия обеспечена. ( источник )

В контракте на обслуживание попробуйте установить для сеанса значение NotAllowed.

[ServiceContract(SessionMode=SessionMode.NotAllowed)]

По умолчанию максимальное количество сеансов, которое может принимать хост службы, составляет 10 . Таким образом, вы можете проверить, может ли ваша проблема быть воспроизведена в отношении 10 сеансов.

...