Сбои WCF под нагрузкой - MessageSecurityException - PullRequest
1 голос
/ 22 января 2009

Я нагрузочно тестирую свой сайт. Сайт вызывает службу WCF, работающую в том же окне, используя clientCredentialType = "Windows". Все работает, пока я не достигну определенной нагрузки (которая даже не очень высока), тогда я получаю следующую ошибку:

System.ServiceModel.Security.MessageSecurityException: HTTP-запрос был запрещен с схема аутентификации клиента 'Anonymous'. ----> System.Net.WebException: удаленный сервер вернул ошибку: (403) Запретное.

При каждом вызове я создаю канал:

var proxy = (IClientChannel)channelFactory.CreateChannel();

В случае успеха я закрываю:

proxy.Close();

При ошибке я отменяю:

proxy.Abort();

Есть идеи, что происходит? Что я могу сделать, чтобы лучше справляться с нагрузками? Что искать?

Ответы [ 3 ]

1 голос
/ 22 января 2009

Является ли ваша служба сессионной службой или вы не беспокоитесь о сохранении состояния между вызовами? Если у вас нет штата, вы можете пометить свой сервис как сервис PerCall. Это обеспечит существование экземпляра службы только во время выполнения клиентского вызова.

Эта глава посвящена главе 4 превосходной книги Ювала Лоуи "Программирование служб WCF".

По умолчанию используется PerSession, который может не соответствовать вашему желанию.

Также см. Это в MSDN: Как: Экземпляр службы управления

0 голосов
/ 28 января 2009

Проблема заключалась в том, что я выполнял тест на своем устройстве dev, то есть XP, использующей IIS 5, который имеет ограничение в 10 соединений.

0 голосов
/ 22 января 2009

Спасибо, Терри. Нет, мой сервис не поддерживает состояние. Я попытался украсить свой класс обслуживания с помощью:

[ServiceBehaviorAttribute(InstanceContextMode = InstanceContextMode.PerCall)]

Нет помощи. Кажется, что точка сбоя составляет около 4 одновременных вызовов.

...