Question

UPDATE 3:
J'ai créé un projet de test Visual Studio 2008 et essayé de créer une référence de service à une référence de service WCF de site partagé et j'ai reçu l'erreur suivante:

  

Une erreur s'est produite lors du téléchargement.   " http: //apps.mydomain/MyService.svc ".   La demande a échoué avec le statut HTTP   400: mauvaise demande. Les métadonnées contiennent un   référence qui ne peut pas être résolue:   " http: //apps.mydomain/MyService.svc ".   Type de contenu application / soap + xml;   charset = utf-8 n'était pas supporté par   un service    http: //apps.mydomain/MyService.svc '.   Les liaisons client et service peuvent être   mal assorti. Le serveur distant est revenu   une erreur: (415) Impossible de traiter le   message parce que le type de contenu   'application / soap + xml; jeu de caractères = utf-8 '   n'était pas le type attendu 'text / xml;   charset = utf-8 '.. Si le service est   défini dans la solution actuelle, essayez   la construction de la solution et l'ajout de la   référence de service à nouveau.

UPDATE 2:
@Nick - J'ai essayé de suggérer de définir explicitement l'adresse de chaque terminal avec le chemin complet de chaque serveur et j'obtiens toujours le même résultat.

De plus, lorsque j'essaie de définir l'attribut listenUri avec l'URL du site partagé, j'obtiens une erreur de requête incorrecte 400, au lieu d'une erreur 404.

MISE À JOUR
Après quelques recherches supplémentaires, il y a eu des conflits de paramètres de configuration IIS entre http: //apps1.mydomain et http: //apps2.mydomain et a réussi à dépasser le " application serveur indisponible " Erreur.

Je reçois maintenant une erreur 404 lorsque j'ai tenté de naviguer sur le site partagé ( http: //apps.mydomain ), mais je peux accéder au http: //apps1.mydomain et à http: //apps2.mydomain référence de service.

Problème d'origine

Ma société utilise Microsoft NLB pour équilibrer le trafic entre nos Serveurs IIS. J'ai récemment déployé un service WCF sur chaque serveur IIS 6 Windows Server 2003 Édition Standard SP1. J'ai reçu l'erreur suivante lorsque j'ai essayé d'accéder au nom de domaine partagé avec IE 7:

  

Application serveur non disponible Le   application Web que vous essayez de   l'accès sur ce serveur Web est actuellement   indisponible. Veuillez cliquer sur le bouton & Quot; Refresh & Quot;   bouton dans votre navigateur Web pour réessayer   votre demande.

     

Note de l'administrateur: Un message d'erreur   détaillant la cause de cette spécifique   échec de la demande peut être trouvé dans le   journal des événements d'application du Web   serveur. Veuillez vérifier cette entrée de journal   pour découvrir ce qui a causé cette erreur   se produire.

Le consommateur indiquera le http: //apps.mydomain pour utiliser le service, mais le domaine virtuel est mappé sur http: //apps1.mydomain ou http: //apps2.mydomain . Si je navigue jusqu'au service sur chaque serveur, je ne reçois pas cette erreur.

Le service utilise actuellement un lien anonyme de type BasicHttpBinding.

Quelqu'un d'autre a-t-il rencontré ce problème?

Historique

Avant que cette erreur ne se produise, j’ai reçu l’erreur suivante lorsque je vous ai présenté les trois noms de domaine ( http: //apps.mydomain , http: //apps1.mydomain , http: //apps2.mydomain ):

  

Cette collection contient déjà un   adresse avec schéma http. Il peut   être au plus une adresse par schéma dans   cette collection.

J'ai utilisé la classe ServiceHostFactory . personnaliser mon fichier .svc pour spécifier une fabrique de services personnalisée. Ensuite, je crée notre usine personnalisée en héritant de ServiceHostFactory et en effectuant les remplacements requis.

public class MyFactory : ServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        return new ServiceHost(serviceType, baseAddresses[0]);
    }
}

<%@ ServiceHost Language="C#" Factory="MyFactory" Debug="true" Service="MyService" CodeBehind="~/App_Code/MyService.cs" %>
Était-ce utile?

La solution

Après quelques expériences avec différentes configurations pour mon service WCF et une application consommatrice. J'ai créé une référence de service à l'une des références de service actives ( http: //apps1.mydomain ou http: //apps2.mydomain ) dans l'application consommatrice. Ensuite, j'ai modifié la référence de l'ordinateur d'extrémité dans la configuration du client pour pointer vers l'adresse WCF du site partagé ( http: //apps.mydomain ). ) et j’ai pu consommer et utiliser le service.

Autres conseils

J'ai déjà eu un problème avec WCF et l'équilibrage de charge où les serveurs avaient plusieurs cartes réseau avec des adresses IP différentes et où WCF capturait simplement la première adresse IP trouvée. Nous devions définir explicitement l'adresse IP dans la définition de service de chaque serveur pour que WCF soit lié à la bonne.

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