Après beaucoup de frustration, je réussi à déterminer que les deux fichiers web.config (sur le client et le serveur, qui sont tous deux des applications web dans ce cas), les sections suivantes doivent être modifiées:
client :
<client>
<endpoint
address="http://mysite.com:port/services/someservice.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_ISomeService"
contract="MyServices.ISomeService"
name="BasicHttpBinding_ISomeService" />
</client>
</system.serviceModel>
serveur
<system.serviceModel>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://mysite.com:port/services"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.SomeServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyServices.SomeServiceBehavior"
name="MyServices.SomeService">
<endpoint address="http://mysite.com:port/services/someservice.svc"
name="endpoint.SomeService"
binding="basicHttpBinding"
bindingConfiguration=""
contract="MyServices.ISomeService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Le Il est important de noter ici que l'adresse de l'hôte dans les trois sections pertinentes (adresse du point de terminaison client, valeur de base du serveurAddressPrefixFilter et adresse du point de terminaison du serveur) doit correspondre.
Je peux passer d'un serveur à l'autre en les modifiant, à condition qu'ils correspondent. Je préférerais toujours un moyen de définir cela en fonction de la machine sur laquelle le serveur fonctionne, mais cela fonctionne pour le moment.
Impressions WCF Ce qui est chaud: objet persistant. L'objet proxy client (créé lorsque vous ajoutez une référence de service) maintient une connexion permanente au service sur le serveur. L'instance de service référencée par le proxy client conserve son état entre les appels, ce qui peut simplifier les signatures de méthode et rendre l'objet proxy client, et le service dans son ensemble, beaucoup plus utile pour certaines applications. Les types d'objets de paramètres peuvent être partagés entre le client et le serveur s'ils sont déclarés dans une bibliothèque commune, ce qui signifie que vous n'avez pas besoin de créer deux classes ou classes wrapper très similaires pour transmettre des structures de données non-primitives. Ce qui ne l'est pas: la configuration est une douleur royale, mal documentée et beaucoup trop compliquée. Faire fonctionner ceci dans une configuration d'environnement test/dev/staging/production où le service doit être conscient de son emplacement est frustrant. Je ne suis pas convaincu que le fait de rendre le service conscient de son URL de domaine (plutôt que, disons, un chemin relatif à tout ce qui est en cours d'exécution) présente des avantages significatifs, sans parler des problèmes de sécurité. Cela dit, je continue à suivre le chemin de la WCF, car les avantages l'emportent largement sur les maux de tête.
Attention à élaborer? Je ne suis pas sûr de ce que vous entendez par "parties WCF". Aussi, est-il possible de spécifier un port pour le wcf différent du site auquel il appartient? Pourquoi voudrais-je faire ça? –
Désolé, je suis plus habitué à héberger WCF dans les services, pas à l'intérieur d'IIS. Pour vos circonstances, vous pouvez regarder http://ferventcoder.com/archive/2007/10/02/WCF-in-IIS-with-Websites-that-have-Multiple-Identities.aspx –