Frage

Ich habe gerade ein WCF-Dienst / Client und es funktioniert gut, wenn auf der gleichen Maschine laufen. Aber kann nicht herausfinden, wie es zu konfigurieren, auf verschiedenen Rechnern laufen. Wissen Sie, wie?

Im Moment ist die URI an http: // localhost: 8000 ......

Aber ich denke, ich so etwas wie net.tcp will: // MyServer: 8000 ... ..

wäre Irgendwelche Ideen groß. Danke.

War es hilfreich?

Lösung

Von dem, was es klingt wie, Sie haben sowohl den Service und Client in derselben ausführbaren Datei. Während dies getan werden kann, wenn man sie auf separaten Maschinen wollen, müssen Sie eine ausführbare Datei / Host für den Dienst haben (entweder selbst gehosteten oder in IIS) und eine ausführbare Datei für den Client. Jeder muß richtig mit der Adresse, Bindung und Vertrag in dem entsprechenden Konfigurationsabschnitt dafür konfiguriert werden. Also auf dem Server würden Sie so etwas wie diese:

<configuration>
    <system.serviceModel>
        <services>
            <service name="YourService">
                <endpoint address="http://MyServer:8000/..."
                          binding="BasicHttpBinding"
                          contract="Your.IContract" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

Und auf dem Client müßten Sie diese:

<configuration>
    <system.serviceModel>
        <client>
            <endpoint address="http://MyServer:8000/..."
                      binding="BasicHttpBinding"
                      contract="Your.IContract"
                      name="ClientEndpoint" />
        </client>
    </system.serviceModel>
</configuration>

Die Hauptsache ist, um sicherzustellen, dass der Client und Server miteinander über den angegebenen Port und Protokoll (in erster Linie sicherstellen, dass eine Firewall die Kommunikation nicht blockiert) kommunizieren kann. Die andere Sache bewusst zu sein, ist Ihre Bindung Protokoll zu ändern kann andere Aspekte Ihres Service auswirken (Sicherheit ist ein großer, aber auch das, was man kann und nicht mit dem Dienst tun kann).

Andere Tipps

Es gibt nicht genügend Informationen hier Ihre Frage zu beantworten.

Angenommen, Sie nicht Adress- / Bindung / Vertragsinformationen in der Servicehost und Proxies durch Code einstellen, müssen Sie den Abschnitt Ihrer Konfigurationsdatei schreiben.

Wenn Sie es in Code tun, dann müssen Sie zeigen, was Code, den Sie verwenden.

Von dem, was ich sagen kann, scheint es, dass Sie eine Nichtübereinstimmung mit der Transportbindung haben könnten. Der Service und der Client auf dem gleichen Transport (http, tcp, Named Pipes, etc, etc) sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top