Frage

Ich habe einen WCF-Dienst, der durch einen BL, eine Datenschicht und schließlich SQL Server-Back-End-Anrufe. Mein Service stellt verschiedene Methoden / Operationen Daten, um aus der Datenbank. Ich habe auch einen Host für sie zum Testen gebaut, und ein Windows-Dienst-Host, das ist, wie ich plane, es zu implementieren.

Gestern, als ich einen Test-deploy tat, begann der Service gut, aber ich habe keine Chance, um zu sehen, wenn die Daten korrekt zerren. Hier ist das Ding: Mein Einsatz Testumgebung (MS Server 2003) ist ganz anders als meine eigene (Laptop) lokalen Test Enviro. I eingesetzt, indem die bin \ debug Inhalt des Projekts Windows Service Abschreiben auf den Server und Verweisen auf die .exe da, wenn ich InstallUtil.exe verwendet. Aber die Datenverbindung für die DL sollte eine andere Anschlussschnur nehmen, natürlich, wie es um die Datenbank auf dem Server verbunden werden soll, nicht meinen Laptop. Doch die einzigen app.config ich in dem Verzeichnis sehe ich eingesetzt ist derjenige, für die Service-Host. Die anderen Projekte, wie die DL und BL, sind dort auch als DLL, aber keine app.config ist für entweder. Also, wie kann ich die app.config für die DL mit der richtigen für diese Enviro ersetzen? Ich bin sicher, dass dies ein einfaches Problem ist, dass ich einfach nicht cluing in auf.

Eine verwandte Frage: Wenn wir später entscheiden, dass wir einen HTTP-Host statt verwenden möchten - oder zusätzlich zu - TCP, kann ich einen zweiten Host laufen, dass gleiche Service losfahren? Muss ich nur den Host mit IIS bereitstellen und einen Dienstknoten zu den app.configs hinzufügen?

War es hilfreich?

Lösung

App.config für die Hosting-Umgebung, in diesem Fall der Windows-Dienst verwaltet wird, enthält die Konfiguration für alle Module. In ähnlicher Weise Web.config enthält alle Konfigurationen, wenn Sie es auf IIS hosten.

Andere Tipps

Wenn Sie ein Projekt bereitstellen, die nur app.config / web.config Sie erhalten, ist derjenige, der in der ausführbaren Projekt (Webseite / console app / Windows-Dienst / Windows Forms app / etc. Projekt). Jegliche app.configs für DLL-Projekte werden nicht in das Verzeichnis ist kopiert werden.

Sie müssen die Konfigurations Abschnitte aus Ihrem DLL-Projekte kopieren und sie in Ihrem Service-Projekt app.config setzen.

Für Ihre zweite Frage, können Sie verschiedene Endpunkte für den gleichen Dienst in der gleichen Servicehost Host. Sie können einen HTTP-Endpunkt in einem Windows-Dienst / console App hosten. Wenn Sie HTTP-Host außerhalb von IIS, müssen Sie Berechtigungen für Ihre Benutzer geben, es zu ermöglichen, einen HTTP-Port zu öffnen. (Siehe http://msdn.microsoft.com/en-us/library/ ms733768.aspx ). Für HTTP Ihr Leben könnte einfacher sein, in IIS-Hosting, aber es in einem normalen Servicehost funktioniert.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top