Load-Balancing-Fehler mit WCF-Dienst - NLB
-
19-08-2019 - |
Frage
UPDATE 3:
Ich habe ein Visual Studio 2008-Testprojekt und versuchte, einen Dienstverweis auf gemeinsam genutzte Site WCF-Dienst Referenz zu erzeugen und erhielt die folgenden Fehler:
Es gab einen Fehler beim Herunterladen ' http: //apps.mydomain/MyService.svc '. Fehler bei der Anforderung mit HTTP-Status 400: Bad Request. Metadaten enthält ein Referenz, die nicht aufgelöst werden kann: ' http: //apps.mydomain/MyService.svc '. Inhaltstyp application / soap + xml; charset = UTF-8 wurde nicht unterstützt durch Bedienung http: //apps.mydomain/MyService.svc ‘. Die Client- und Service-Bindungen können stimmen nicht überein. Der Remote-Server zurück ein Fehler: (415) nicht verarbeiten kann die Nachricht, da der Inhaltstyp ‚Application / soap + xml; charset = UTF-8' war nicht der Typ ‚text / xml erwartet; charset = utf-8' .. Wenn der Dienst in der aktuellen Lösung definiert sind, versuchen Aufbau der Lösung und das Hinzufügen der Dienstverweis wieder.
UPDATE 2:
@ Nick - Ich hat versucht, Ihren Vorschlag von explictly die Adresse jeden Endpunkt mit dem vollständigen Pfad jeden Server und ich immer noch das gleiche Ergebnis
Auch wenn ich versuche, das nuri Attribut mit der gemeinsamen genutzten Website-URL zu setzen, erhalte ich einen 400 Bad Request Fehler anstelle einem 404-Fehler.
UPDATE
Nach einigen weiteren Studien gab es einige IIS Konfigurationskonflikte zwischen http Einstellung: //apps1.mydomain und http: //apps2.mydomain und in der Lage war vorbei zu bekommen "nicht verfügbar" Server Anwendungsfehler.
Jetzt bekomme ich einen 404-Fehler, wenn ich auf die gemeinsam genutzten Website zu durchsuchen versucht ( http: //apps.mydomain ), aber ich bin auf den http durchsuchen können: //apps1.mydomain und http:. //apps2.mydomain Dienstverweis
Original Problem
Mein Unternehmen verwendet Microsoft NLB Balance Verkehr laden zwischen unserem IIS-Servern. Vor kurzem habe ich einen WCF-Dienst auf jedem IIS 6 Windows Server 2003 Standard Edition SP1-Servern bereitgestellt. Ich erhielt folgende Fehlermeldung, wenn ich auf den gemeinsamen genutzten Domain-Namen zu suchen versucht, mit IE 7:
Server-Anwendung nicht verfügbar Die Web-Anwendung, die Sie versuchen, Zugriff auf diesem Webserver ist derzeit nicht verfügbar. Bitte drücken Sie die „Refresh“ Schaltfläche in Ihrem Web-Browser erneut zu versuchen Ihre Anfrage.
Administrator Hinweis: Eine Fehlermeldung Detaillierung, die Ursache dieses spezifischen Anforderungsfehler kann in die gefunden werden Anwendungsereignisprotokoll der Bahn Server. Überprüfen Sie diesen Protokolleintrag um herauszufinden, was diesen Fehler verursacht auftreten.
Der Verbraucher an den http: //apps.mydomain den Dienst zu nutzen, sondern virtuelle Domäne zugeordnet http: //apps1.mydomain oder http: //apps.mydomain , http: //apps1.mydomain , http: //apps2.mydomain ):
Diese Sammlung enthält bereits eine Adresse mit Schema http. Dort kann sein höchstens eine Adresse pro Schema in diese Sammlung.
Ich benutzte die Servicehost Klasse meine SVC-Datei anpassen eine benutzerdefinierte Service-Fabrik zu spezifizieren. Dann erstelle ich unsere eigene Fabrik durch von Servicehost erben und überschreiben, wie erforderlich.
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" %>
Lösung
Nachdem ich einige mit unterschiedlichen Konfigurationen für meine WCF-Dienst zu experimentieren und Anwendung raubend. Ich habe einen Dienstverweis auf eine der Arbeits Service Referenzen ( http: //apps1.mydomain oder http: //apps2.mydomain ) in der konsumierenden Anwendung. Dann änderte ich die Endpunktreferenz in der Client-Konfiguration auf die gemeinsam genutzten Website WCF-Adresse Punkt ( http: //apps.mydomain ) und ich war in der Lage, den Dienst zu konsumieren und zu verwenden.
Andere Tipps
Ich habe ein Problem hatte, bevor er mit WCF und Load-Balancing, wo die Server mehrere Netzwerkkarten mit unterschiedlichen IP-Adressen und WCF hätte pic nur die erste IP-Adresse gefunden. Wir mussten explizit die IP-Adresse auf jeden Service-Definition des Servers so WCF auf den richtigen binden würde.