Ce qui se passe si je l'ai mis HttpGetEnabled = false
Je suis confus avec les Métadonnées de publier concept.
Si dans un Service WCF fichier de config que j'avais écrit :
<serviceMetadata httpGetEnabled="false"/>
Pas de question, il est vrai ou faux. Quand j'ai essayé de donner une référence de service dans une application cliente en utilisant "Ajouter une Référence de Service..." et cliqué sur "Découvrir", je suis en mesure de récupérer une Référence de Service.
Mais une fois enlevé les deux lignes suivantes: -
<endpoint address="mex" binding="mexBasicHttpBinding" contract="IMetadataExchange"/>
<serviceMetadata httpGetEnabled="false"/>
Maintenant, après que quand j'ai essayé de faire référence à une application cliente en utilisant "Ajouter une Référence de Service...." et cliqué sur le bouton "Découvrir", je suis PAS en mesure de récupérer une Référence de Service....
Maintenant quelqu'un peut me dire exactement ce que cela signifie.
Pourquoi après sa mise en Faux il est encore en permettant à l'ensemble de référence. Et pourquoi, après la suppression de ces lignes, il ne permet pas de définir de référence.
-Anil
OriginalL'auteur Anil Purswani | 2011-04-15
Vous devez vous connecter pour publier un commentaire.
MEX et WSDL sont deux régimes différents pour dire les clients potentiels au sujet de la structure de votre service. De sorte que vous pouvez choisir de faire vos contrats de service public "métadonnées économe format" (MEX) ou dans le "web service description language" (WSDL) -- le dernier étant accessible via HTTP(s).
Donc dans le but de générer des proxy, vous avez besoin de méta-données de l'information. Lorsque vous retirez le serviceMetadata ligne de vous dire que vous n'êtes pas fournir des méta-données au format WSDL.
Mais la ligne avant, la publication de métadonnées à MEX, est toujours actif, donc vous pouvez générer un proxy à partir de ces métadonnées.
De ceux découle naturellement que lorsque vous fournissez ni WSDL ni MEX informations mises en forme, vous ne pouvez pas générer un proxy.
Comme Joel C justement fait remarquer, les liaisons sont un(n presque) orthogonale concept. Si vous autorisez les clients à parler de vous via HTTP de base, ws HTTP, net des canaux nommés ou les boules de cristal qui est tout à fait ne dépend pas de la façon dont vous publiez vos services.
La Sécurité WCF projet d'orientation et /ou MS "les pratiques et les modèles" pour la sécurité WCF peut fournir une compréhension plus profonde.
Mon plaisir. 🙂
Je ne sais pas si cela répond à la question: "Ce qui se passe si je l'ai mis HttpGetEnabled = false?", est-il?
OriginalL'auteur Cornelius
Vous êtes en train d'ajouter une référence de service, ce qui génère un proxy basé sur l'Échange de Métadonnées (mex). Le httpGetEnabled de configuration vous permet de définir un point de terminaison http qui permet à un non-mex proxy être généré à l'aide de WSDL, comme un héritage .NET service web proxy. Ils sont différents protocoles, contrôlée par différents paramètres. Je crois que si vous avez
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>
vous pouviez ajouter une référence de service web .NET 2.0, qui vous serait incapable de le faire à l'aide de la configuration<serviceMetadata httpGetEnabled="false"/>
.Comment votre service WCF communique avec d'autres processus (de son point de terminaison de la liaison) et la façon dont il expose les métadonnées à propos de lui-même (ses métadonnées de configuration) sont indépendants l'un de l'autre. Il fait sens pour exposer les métadonnées que WSDL (à l'aide de
httpGetEnabled="true"
et unhttpGetUrl
) si vous prévoyez d'accéder au service en tant que service web SOAP (à l'aide d'un point de terminaison configuré avecWsHttpBinding
), peuvent être utilisés sans l'autre.Alors pourquoi après avoir retiré les deux lignes suivantes: - <endpoint address="mex" binding="mexBasicHttpBinding" contrat="IMetadataExchange"/> <serviceMetadata httpGetEnabled="false"/> Pourquoi il ne m'autorise pas à donner de référence dans l'application client.(Je ne veux pas l'utiliser comme webservice) j'ai l'impression de l'exposant ServiceMetadata est quelque part liés à la WCF de la Communication. Comme sans métadonnées client ne peut pas établir de communication. En tant que client de l'application doit connaître le type et d'autres composants du service pour établir la communication qui possible avec uniquement des métadonnées
C'est seulement lié à l'aspect découverte de la WCF. Vous ne pouvez pas générer un proxy sans elle. Si vous êtes de la génération d'un proxy WCF, qui va utiliser le MetadataExchange de configuration; si vous utilisez un WSDL proxy, qui va utiliser le httpGetEnabled réglage. Mais une fois que vous avez le proxy, devrait travailler à utilisation, le service, les paramètres ne doivent affecter la capacité de générer votre proxy.
OriginalL'auteur Joel C