Как проверить настройки тайм-аута WCF? - PullRequest
6 голосов
/ 11 июня 2009

Как я могу протестировать эффект каждого тайм-аута WCF? Я хочу убедиться, что я выбираю правильные значения, и я также хочу убедиться, что мой код обработки исключений является надежным.

Я создал клиентскую программу и службу WCF сервера, чтобы проверить настройки тайм-аута. В моей реализации сервиса я добавил Thread.Sleep (5000). На стороне клиента единственным параметром, который вызывает тайм-аут, является sendTimeout.

Независимо от того, какое значение я использую во всех других настройках, время ожидания никогда не наступает. Как проверить все остальные настройки?

Вот параметры, которые я хотел бы проверить: sendTimeout, receiveTimeout, closeTimeout, openTimeout и inactivityTimeout (в надежных сеансах).

Редактировать 19 февраля 2009 : Это редактирование просто для того, чтобы показать, что я до сих пор не нашел способ модульного тестирования настроек времени ожидания WCF.

Ответы [ 2 ]

1 голос
/ 11 июня 2009

Если вы посмотрите в нужном месте, вы можете получить события канала и изменить свой тест, чтобы быть в курсе их. Connect - это логический метод службы WCF. Я использовал svcutil для генерации прокси-класса с использованием асинхронных методов.

private StateManagerClient _stateManagerClient;
private InstanceContext _site;

public New()
{
    _site = new InstanceContext(this);
    _serviceClient = new ServiceClient();
    _serviceClient.ConnectCompleted += ServiceClient_ConnectCompleted;
}

private void ServiceClient_ConnectCompleted(object sender, ConnectCompletedEventArgs e)
{
    //Bind to the channel events
    foreach (IChannel a in _site.OutgoingChannels) {
        a.Opened += Channel_Opened;
        a.Faulted += Channel_Faulted;
        a.Closing += Channel_Closing;
        a.Closed += Channel_Closed;
    }
}

private void Channel_Opened(object sender, EventArgs e)
{
    
}

private void Channel_Faulted(object sender, EventArgs e)
{
    
}

private void Channel_Closing(object sender, EventArgs e)
{
    
}

private void Channel_Closed(object sender, EventArgs e)
{

}

Надеюсь, это даст вам некоторую ценность.

1 голос
/ 11 июня 2009

Не полный ответ, но может быть полезным объяснение значений времени ожидания, указанных ниже.

http://social.msdn.microsoft.com/forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...