Estoy usando WCF en la comunicación entre un servidor y un cliente (ambos escritos en C#).Establece programáticamente el tiempo de espera de WCF en el modo de depuración
En el modo de lanzamiento, los tiempos se deben establecer en ~ 20 segundos, pero en el modo de depuración quiero establecerlos en un valor mayor para que pueda depurar/pisar mi código sin que se agote el tiempo de espera.
Sé que puedo cambiar los tiempos de espera modificando el archivo app.config. Sin embargo, tengo dos enlaces diferentes y 4 valores de tiempo de espera en cada uno, así que tendría que cambiar en varios lugares, y es fácil de olvidar.
Para resolver esto, me gustaría tener una sección pequeña #if DEBUG en mi código que programáticamente cambia los valores de tiempo de espera a 1 hora.
He intentado utilizar el siguiente código para hacer esto:
Configuration configuration =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModel =
ServiceModelSectionGroup.GetSectionGroup(configuration);
BindingsSection bindings = serviceModel.Bindings;
foreach (var configuredBinding in bindings.WSHttpBinding.ConfiguredBindings)
{
configuredBinding.CloseTimeout = new TimeSpan(0, 30, 0);
configuredBinding.OpenTimeout = new TimeSpan(0, 30, 0);
pero las propiedades de tiempo de espera * son de sólo lectura, así que conseguir un error de compilación.
No me gusta la idea de crear enlaces desde cero programáticamente. Si cambio algunos de los atributos en el app.config, debo recordar hacer el mismo cambio en el código para asegurarme de que el comportamiento de depuración sea similar al del release-behavior (excepto los tiempos de espera ...)
¿Alguien tiene un buen consejo sobre cómo manejar esto?
En un 'Client', el único tiempo de espera de la mayoría de la gente necesitará siempre es el' sendTimeout' https://social.msdn.microsoft.com/Forums/vstudio/en- US/84551e45-19a2-4d0d-bcc0-516a4041943d/explaination-of-different-timeout-types –