Question

Je suis dans le processus d'apprentissage WCF, et comme un exercice pratique, je l'ai décidé d'écrire wrapper générique pour la classe ServiceHost. L'idée est d'avoir une classe comme celle ci-dessous:

public class Host<I(nterface), S(ervice)>
    where S : I, new()
{
    /**/

    ServiceHost mServiceHost;
    S mServiceInstance = new S();
}

Lorsque le type I est l'interface avec l'attribut [ServiceContract] et le type S est le service qui implémente l'interface forementioned.

J'ai créé un service de type bonjour monde auxiliaire dans le temps moyen de tester ma classe sur la route.

Dans le constructeur de l'hôte que j'ai instancié le ServiceHost interne comme ceci:

mServiceHost = new ServiceHost(mServiceInstance);

J'ai ajouté un point de terminaison de service:

mServiceHost.AddServiceEndPoint(typeof(I), new BasicHttpBinding(), new Uri("http://localhost:40000/MyTestService"));

un peu plus tard, je l'ai ouvert l'hôte, a lancé ma demande et a tenté de voir si mon navigateur indique un cadeau de service sous le « http: // localhost: 40000 / MyTestService » - Je suis une page blanche et toutes les tentatives d'ajouter une référence de service a échoué.

J'ai ajouté plus tard le même Uri au constructeur du ServiceHost:

mServiceHost = new ServiceHost(mServiceInstance, new Uri("http://localhost:40000/MyTestService"));

est soit 2 argument de ce constructeur:

params string[] baseAddresses 

ou

params Uri[] baseAddresses

Dans tous les cas, la présence du mot-clé « params » me dit que ce paramètre est en option.

J'ai reacitvated mon application, et (en utilisant le navigateur) naviguée au uri. La page de service sauté vers le haut. Dans l'ensemble - ça fonctionne, mais pas la façon dont je, il me semble attendu manquer quelque chose.

Questions:

  1. Pourquoi le service échouer quand je ne l'ai pas fourni le paramètre baseAddresses en option dans le constructeur ServiceHost - tout en essayant de nourrir les adresses en ajoutant points de terminaison de service

  2. Puis-je atteindre mon objectif "la façon dont je voulais d'abord qu'il soit"?

Meilleures salutations, et dans l'espoir d'entendre des experts WCF bientôt (tm).

Était-ce utile?

La solution

Greg Sansom répondu à votre première question. Quant à la seconde, il peut se faire: s'il vous plaît obtenir un regard sur les cours ServiceModelEx de Juval Lowy (en particulier ServiceHost) Télécharger ici il contient plusieurs classes utiles pour WCF

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top