J'ai créé une Serice WCF qui a fonctionné bien lorsqu'il est hébergé sur IIS.
Maintenant, j'ai pris le même service et j'ai créé une application hôte dans WPF, et en essayant de démarrer le service à partir de cette application, je reçois cette exception. : p>
3 Réponses :
L'erreur est assez claire - vous utilisez HTTP, vous avez activé httpBtEnableabled sur votre comportement ServiceMetaData, mais vous n'avez pas fourni d'adresse de base dans votre configuration.
dans IIS, les adresses de base ne sont ni nécessaires, ni utilisées. , puisque l'emplacement du fichier * .SVC définit votre adresse de service. Lorsque vous êtes auto-hébergement, vous pouvez et devez utiliser des adresses de base. P>
Changez votre config pour regarder quelque chose comme ceci: p>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata
httpGetEnabled="true"
httpGetUrl="http://localhost:8282/YourService/mex" />
</behavior>
</serviceBehaviors>
J'ai fini ici avec le même problème, mais pas parce que je ne savais pas quoi faire. Au contraire, je ne savais pas quoi chercher pour ajouter une "adresse de base" à ma configuration. Quelle ressource avez-vous utilisé pour déterminer l'existence et la syntaxe du code> propriétés?
J'ai fait face à cette erreur lorsque j'ai essayé d'utiliser net.Pipe Binding.in mon cas, le comportement du service par défaut a publié les métadonnées de service, c'est la cause de mon erreur. Ma solution consiste à utiliser différents comportements pour vos services. , alors j'ai changé mon fichier de configuration en fonction de @marc_s Réponse et effectuez différents comportements de service comme suit:
<serviceBehaviors>
<!--Default behavior for all services (in my case net pipe binding)-->
<behavior >
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<!--for my http services -->
<behavior name="MyOtherServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
Vérifiez que la classe de service est correcte.
Il est résolu mon problème P>
// Create a ServiceHost for the CalculatorService type and // provide the base address. serviceHost = new ServiceHost(typeof(ServiceClass));
Quel est votre code pour créer le proxy?
ProduitsServiceHost = nouveau serviceHost (typeOf (Produits.Productsservice)); produitsServiceHost.open (); stop.isenabled = true; start.isenabled = false; statut.text = "service en cours d'exécution ...";