2009-12-19 17 views
0

Toutes les tentatives pour modifier les paramètres de configuration du point final de self-service hébergé WCF Fail:WCF point final paramètres de liaison ne sont pas mis à jour

public void Start() 
    { 
     BasicHttpBinding binding = new BasicHttpBinding(); 
     binding.Name = "NAVBinding"; 
//--------------------START editing------------------------------- 
     TimeSpan interval = new TimeSpan(1, 50, 00); // all these following (inbetween comments) lines have no effect 
     binding.MaxReceivedMessageSize = 2147483647; 
     binding.MaxBufferSize = 2147483647; 
     binding.ReceiveTimeout = interval; 
     binding.OpenTimeout = interval; 
     binding.CloseTimeout = interval; 
     binding.SendTimeout = interval; 
     XmlDictionaryReaderQuotas readerQuotas = new XmlDictionaryReaderQuotas(); 
     readerQuotas.MaxDepth = 2147483647; 
     readerQuotas.MaxStringContentLength = 2147483647; 
     readerQuotas.MaxArrayLength = 2147483647; 
     readerQuotas.MaxBytesPerRead = 2147483647; 
     readerQuotas.MaxNameTableCharCount = 2147483647; 
     binding.ReaderQuotas = readerQuotas; 
//----------------------END editing--------------------------- 
     binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; 
     Uri baseAddress = new Uri("http://localhost:8000/nav/customer"); 
     Customer_Service service = new Customer_Service(); 
     serviceHost = new ServiceHost(service, baseAddress); 
     serviceHost.AddServiceEndpoint(typeof(ICustomer_Service), binding, baseAddress); 
     OpenMetadataExchange(baseAddress); 
     service.navEventListner = this; 
     serviceHost.Open(); 

    } 

mais je peux facilement changer la propriété MaxReceivedMessageSize avec l'aide de wcfStorm application et dans ce cas, c'est vraiment changé. Mais après le redémarrage du service, tout revient à ses paramètres par défaut (par exemple MaxReceivedMessageSize = 65536).

S'il vous plaît, qu'est-ce que je fais? Comment modifier mon code afin que les nouvelles valeurs soient mises à jour?

+0

comment ** savez-vous ** que les paramètres ne fonctionnent pas ?? Vous attendez-vous à ce que le fichier de configuration soit mis à jour, ou quelles sont vos attentes? –

+0

Je sais que les paramètres ne fonctionnent pas d'essayer d'invoquer la méthode qui devrait transférer des données supérieures à 65536, dans ce cas, j'ai une erreur (une autre méthode de transfert de données de moins de quantité est OK). Si je, en utilisant wcf testing app (dans mon cas wcfstorm), change deux paramètres MaxReceivedMessageSize et MaxBufferSize à une plus grande valeur, cette méthode avec de grandes données invoque et se termine sans problèmes. – rem

+0

J'ai aussi beaucoup essayé de jouer avec les fichiers app.config (à la fois sur le client et sur le serveur) mais rien n'a aidé. Je ne l'ai pas souligné dans ma question parce que je pense que ces paramètres codés en C# ont plus d'impact (peut-être que je suis très, mais, en fait, d'abord dans l'application de service côté serveur je n'ai pas app.config fichier soit et tout a bien fonctionné (sauf pour les nouveaux paramètres de liaison MessageSize) – rem

Répondre

1

Réglage ces valeurs sur le côté serveur ne pas les mettre automagiquement sur le côté client . Il ne suffit pas de les configurer du côté serveur: le transfert entre le client et le serveur est dicté par le plus petit des deux paramètres entre le client et le serveur. Même si le serveur autorise 2 Go de taille de message, si le client insiste toujours sur 64 Ko, la plus petite valeur de 64 Ko l'emporte. Cela ne signifie pas que le paramètre de 2 Go côté serveur n'est pas disponible, mais il n'est pas efficace car le client utilise un paramètre plus petit.

Si vous souhaitez utiliser les mêmes paramètres côté client, vous devez configurer le côté client en conséquence. Vous devrez faire la même chose lors de la création de votre proxy client ou configurer votre client à partir d'un fichier app.config.

+0

Merci, Marc, vous avez clarifié ma vision de ce problème Je ne savais pas que les paramètres de transfert sont les plus petits du serveur et du client Cette ignorance m'a conduit à des tentatives aveugles sans une compréhension claire.Je suis maintenant capable de transférer des données d'un montant certainement supérieur à 65536 (en fait, j'ai seulement supprimé tous les paramètres de mon fichier app.config côté serveur avec des paramètres autres que celui du client côté app.config) Un problème est resté avec des données de taille encore plus grande, mais il semble à cause d'un autre problème que j'ai jusqu'ici échoué à comprendre.Merci encore une fois! – rem

+0

@rem: content que je pourrais effacer quelques choses! –