WCF ist mit dem computer-Namen statt der IP-Adresse und kann nicht aufgelöst werden
Ich habe einen WCF service, der funktioniert einwandfrei auf der LAN, aber beim Zugriff von außerhalb der service-Referenz fehlschlägt.
Mein WCF-Dienst gehostet wird, auf einem win2k3-box, ist über eine statische IP keine domain.
- Wenn er lokal arbeitet und das wsdl-zeigt bis auf den port 80 web-Seite, ist es möglich, Ihr service ist mit anderen ports und die router firewall blockiert den Zugriff von außen auf die ports?
- Firewall ist kein problem, der computer-name kann nicht aufgelöst werden außerhalb des LAN, aber ich habe jetzt eine Lösung. Thnx trotzdem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist was für mich gearbeitet. In der config-Datei
Wenn es auf false festgelegt ist, war ich immer so verrückt computername substitution.
multipleSiteBindingsEnabled="true"
zu sein scheint, alles, was ich zu tun haben, für diese zu arbeiten, wie es sollte.Ich war auf der Suche in einem Ansatz die Wiederverwendung der Host-header von HTTP-request. Meiner Meinung nach sollte diese Arbeit in die Entwicklung als in die Produktion.
Es stellt sich heraus, ist so einfach wie:
Diese Weise, wenn das WSDL-Endpunkt zugänglich ist, von einem client dadurch wird sichergestellt, dass alle zugehörigen wsdl/xsd-Ressourcen zugänglich, die mit der gleichen Basis-url.
Fand ich eine Antwort auf diese nach einiger Graben - hier ist was ich gefunden habe, hoffentlich kann Sie jemand retten sonst einige Zeit und Mühe.
1.) Fügen Sie die IP-Endpunkt-Adresse & fügen Sie einen host-Namen mit der Basis-IP-Adresse etwa so:
Dieser verwendet zu werden genug, um meine service-Referenz arbeiten, aber die disco-Datei gestartet wird zurückgegeben, mit dem computer-Namen statt der ip (ich glaube das war nach dem Update auf .NET 4.0).
2.) Wenn Sie einen domain-Namen - (www.myDomain.com), dann fügen Sie diese an den host-header in IIS.
3.) Fügen Sie die IP-Adresse & computer-name des clients hosts-Datei (einfache Lösung nicht immer möglich ist, um alle Ihre Kunden, dass diese Ihre host-Datei jedoch)
4.) Die BESTE LÖSUNG, die ich fand war die Umsetzung der ServiceHosts Factory-Attribut als pro "Timetheos" hier posten: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c7fd51a2-773e-41d4-95a0-244e925597fe
Dies funktionierte gut für mich, wie ich testen konnte, entwickeln & debug-mein-service-Bibliothek lokal und verwenden Sie dann eine service-app zum bereitstellen des service an meinem dev-server und nicht über jede änderung an den Konfigurations-Dateien nach der Veröffentlichung.
Dieser ganze Prozess war ein totaler Alptraum, und ich würde nicht wollen, es bei jeder so, wenn Sie in der gleichen situation und brauchen mehr Infos über die oben genannten Punkte nur get in touch!
Können Sie ein Sternchen * (wildcard) in der Stelle von LocalHost oder den Namen des Computers in der Basis-url zum Beispiel so:
Set service-Endpunkt und httpgeturl wie diese.