Ich habe einen WCF-Dienst, der im LAN funktioniert, aber wenn ich versuche, von außen auf den Dienst zuzugreifen, schlägt die Referenz fehl.
Mein WCF-Dienst wird auf einer win2k3-Box gehostet, die eine statische IP-Domäne verwendet.
Ich habe nach einigen Grabungen eine Antwort darauf gefunden - hier ist, was ich gefunden habe, hoffentlich kann es jemand anderen Zeit und Mühe sparen.
1.) Fügen Sie die IP zur Endpunktadresse & amp; Fügen Sie einen Hostnamen mit der Basis-IP-Adresse wie folgt hinzu:
%Vor%Das war früher genug, um meine Service-Referenz funktionieren zu lassen, aber die Discodatei wurde mit dem Computernamen anstelle der IP-Adresse zurückgegeben (ich glaube, das war nach der Aktualisierung auf .NET 4.0).
2.) Wenn Sie einen Domänennamen (www.myDomain.com) haben, fügen Sie diesen zum Host-Header in IIS hinzu.
3.) Fügen Sie die IP-Adresse & amp; Computername für die Client-Hosts-Datei (einfache Lösung ist nicht immer möglich, um alle Ihre Clients dazu zu bringen, diese zu ihrer Host-Datei hinzuzufügen)
4.) Die BESTE LÖSUNG, die ich gefunden habe, war die Implementierung des ServiceHosts Factory-Attributs gemäß "Timetheos" -Post hier: Ссылка
Das hat gut für mich funktioniert, da ich testen konnte, wie & amp; Debuggen Sie meine Service-Bibliothek lokal und verwenden Sie dann eine Service-App, um den Service auf meinem Dev-Server bereitzustellen, und müssen Sie nach dem Veröffentlichen keine Konfigurationsdateien ändern.
Dieser ganze Prozess war ein absoluter Albtraum, und ich würde es niemandem wünschen. Wenn du also in der gleichen Situation bist und mehr Informationen zu den oben genannten Punkten brauchst, melde dich einfach!
Das hat bei mir funktioniert. In der Konfigurationsdatei
%Vor%Wenn es auf false gesetzt ist, bekam ich diesen verrückten Computername-Ersatz.
multipleSiteBindingsEnabled="true"
scheint alles zu sein, was ich tun muss, damit das so funktioniert, wie es sollte.
Ich habe nach einem Ansatz gesucht, um den Host-Header aus der HTTP-Anfrage wiederzuverwenden. Meiner Meinung nach sollte dies in der Entwicklung genauso funktionieren wie in der Produktion.
Es stellt sich heraus, ist so einfach wie:
%Vor%Auf diese Weise wird sichergestellt, dass alle zugeordneten wsdl / xsd-Ressourcen mit der gleichen Basis-URL erreichbar sind, wenn auf den WSDL-Endpunkt von einem Client zugegriffen werden kann.
Sie können ein Sternchen * (Platzhalter) an der Stelle des LocalHost- oder Maschinen-Namens in der Basis-URL wie folgt verwenden:
%Vor%Tags und Links wcf .net wcf-binding wcf-endpoint hostheaders