Службы работают, но когда база данных выходит из строя, пул приложений останавливается.
На стороне сервиса у нас есть 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"))
{
...
}