J'utilise WCF en communication entre un serveur et un client (tous deux écrits en C#). En mode de libération, les délais devraient être réglés à ~ 20 secondes, mais en mode de débogage, je veux les définir à une valeur plus élevée afin que je puisse déboguer/étape dans mon code sans le délai d'attente.Définir par programme le délai d'attente WCF en mode débogage
Je sais que je peux changer les délais d'attente en modifiant le fichier app.config. Cependant, j'ai deux bindings différents et 4 valeurs de timeout dans chacun, donc je devrais changer à plusieurs endroits, et il est facile d'oublier.
Pour résoudre ce problème, j'aimerais avoir une petite section #if DEBUG dans mon code, qui permette de programmer les valeurs de timeout à 1 heure.
J'ai essayé d'utiliser le code suivant pour ce faire:
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);
mais les propriétés * Délai d'attente sont en lecture seule si je reçois une erreur de compilation. Je ne suis pas friand de l'idée de créer des reliures à partir de zéro par programmation. Si je change certains des attributs dans le app.config, je dois me rappeler de faire le même changement dans le code pour m'assurer que le comportement de débogage est semblable au comportement de libération (excepté les délais d'attente ..)
Quelqu'un a un bon conseil sur la façon de gérer cela?
Dans un 'Client', le seul délai d'attente la plupart des gens auront besoin est le' sendTimeout' https://social.msdn.microsoft.com/Forums/vstudio/en- US/84551e45-19a2-4d0d-bcc0-516a4041943d/explication de types de temporisations différentes –