4 votes

Castle WcfFacility - Comportements de service

Comment puis-je utiliser la WcfFacility de Castle et faire en sorte qu'elle utilise les paramètres standard du fichier de configuration Wcf ?

Si je m'inscris comme ça :

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel()))
);

Je reçois l'erreur suivante :

Le service "{nom}" n'a pas de points de terminaison d'application (hors infrastructure).

Si je m'arrête :

.Configure(configurer => configurer.ActAs(new DefaultServiceModel()))

il semble que les comportements dans la configuration soient ignorés.

Quel est l'usage correct ici ?

5voto

Eben Roux Points 5211

OK, j'ai compris :)

Je m'inscris comme ça :

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel().Hosted()))
);

Le site Hébergé() est là pour indiquer que j'héberge les services ; autrement il semble que la facilité WCF essayera de les héberger, ayant pour résultat des conflits de port.

Donc le problème était que le nom du service dans le fichier de configuration a doit être le nom de type complet de l'implémentation. Si ce n'est pas le cas, on reçoit une erreur indiquant quelque chose du genre "aucun point d'extrémité défini". Le nom du service est donc pas le même que le nom spécifié dans windsor.

0voto

Krzysztof Kozmic Points 19262

Vous y êtes presque.

Tu as besoin de ça :

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X