Je suis en train de créer une liaison personnalisée qui obtient des requêtes HTTP d'une source différente de celle d'une socket TCP en écoute. Lorsque j'accède et que j'ouvre un canal directement, il n'y a pas de problèmes. Toutefois, des problèmes se produisent lorsque j'essaie d'héberger ma liaison dans un point de terminaison d'un WebServiceHost.WebServiceHost n'invoque pas OnAcceptChannel de ChannelListener personnalisé
J'ai inséré des messages de débogage Console.WriteLine() dans chaque fonction du code de ma liaison personnalisée. Tout fonctionne bien jusqu'à ce que la fonction OnOpen() de mon ChannelListener soit appelée. Par la suite, le ServiceModel ne veut tout simplement pas appeler la méthode OnAcceptChannel(). Aucune exception, aucun message d'erreur; il se bloque juste là et n'appelle plus aucune autre fonction de ma liaison. J'ai commenté la sortie de l'application dans le code ci-dessous.
WebServiceHost host = new WebServiceHost(
typeof(MyService), new Uri("http://localhost:80"));
host.AddServiceEndpoint(typeof(MyService), new MyWebHttpBinding(), "");
// BINDING CONSTRUCTOR
// BINDINGELEMENT CONSTRUCTOR
host.Open();
// BINDING: CreateBindingElements (multiple times)
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: CanBuildChannelListener
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: CanBuildChannelListener
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: BuildChannelListener
// CHANNELLISTENER CONSTRUCTOR
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDING: CreateBindingElements (multiple times)
// CHANNELLISTENER: OnOpen
// CHANNELLISTENER: OnOpen END (function completes properly. last output)
Quelqu'un d'entre vous savent ce que je dois changer dans ma demande que la méthode est appelée OnAcceptChannel correctement?
Vive
WebServiceHost est utilisé pour les demandes de style REST .... peut-être que c'est le problème? Que faire si vous utilisez la classe ServiceHost régulière à la place? –
La liaison [i] doit [/ i] être utilisée pour les demandes de style REST comme le WebHttpBinding d'origine. Toutefois, la modification de WebServiceHost en ServiceHost ne résout pas le problème. La sortie est exactement la même. – Etan