Служба WCF слишком занята - PullRequest
0 голосов
/ 08 ноября 2011

Службы работают, но когда база данных выходит из строя, пул приложений останавливается.

На стороне сервиса у нас есть try / catch с исключениями ошибок для всего кода, подключенного к базам данных.

Я ищу советы о том, как уменьшить этот тип ошибок из-за контроля над службами, поскольку у нас нет контроля над серверами.

Пожалуйста, дайте мне знать, если потребуется более подробная информация, и я обновлю сообщение.

Пользовательский поставщик на стороне клиента:

   public class ClientWCFProvider<TT> : IDisposable
    {

            private ChannelFactory<TT> channel;

            public TT WCF { get; set; }

            public ClientWCFProvider(string service)
            {
                channel = GetServiceChannel(service);
                WCF = channel.CreateChannel();
            }

            private ChannelFactory<TT> GetServiceChannel(string service)
            {
                 BasicHttpBinding serviceBinding = new BasicHttpBinding();
                //set the config on the bindings for timeouts etc.
                serviceBinding.MaxReceivedMessageSize = 105190152; 
                serviceBinding.MaxBufferSize = Convert.ToInt32(serviceBinding.MaxReceivedMessageSize);
                serviceBinding.OpenTimeout = new TimeSpan(0, 3, 0);
                serviceBinding.SendTimeout = new TimeSpan(0, 3, 0);


                EnvironmentDescriptor serviceEnvironment;
                EndpointAddress ServiceEndpoint;

                ... code to setup the endpoint


                ServiceChannel = new ChannelFactory<TT>(serviceBinding, ServiceEndpoint);

                return ServiceChannel;
    }
    public void Dispose()
        {
            ((IClientChannel)WCF).Close();
            channel.Close();
        }
}

Тогда службы называются так:

using(var x = new ClientWCFProvider<TT>("NameOfService"))
{
...
}

1 Ответ

1 голос
/ 08 ноября 2011

Конечное решение, основанное на ErnieL: http://blog.davidbarrett.net/archive/2007/11.aspx

...