5 Stimmen

ASP.NET-Verbindungszeichenfolgen-Bereitstellung - bewährte Praxis

Ich habe eine (hoffentlich nützliche) Zusammenfassung der Möglichkeiten zusammengestellt, die ich untersucht habe, um das Thema dieses Beitrags zu erreichen, sowie die Probleme, die ich mit ihnen habe. Bitte teilen Sie mir mit, wenn Sie andere Wege gefunden haben, die Ihnen besser gefallen, insbesondere wenn sie die Probleme lösen, die die von mir genannten Methoden nicht lösen.

  1. Lassen Sie Verbindungszeichenfolgen in web.config und verwenden Sie die XDT/msdeploy-Transformation, um sie durch Einstellungen gemäß meiner aktiven Build-Konfiguration zu ersetzen (z. B. eine web.PublicTest.config-Datei). Mein Problem dabei ist, dass ich ein paar serverspezifische Einstellungen in eine ansonsten global identische Datei mit vielen Konfigurationselementen einfüge und vergrabe. Außerdem kann ich keine Verbindungsstringdefinitionen für mehrere Anwendungen auf Peer-Ebene freigeben.

  2. Geben Sie einen configSource="DeveloperLocalConnectionStrings.config"-Wert für Verbindungszeichenfolgen in web.config an, und XDT transformiert diesen Wert so, dass er auf eine der zahlreichen umgebungsspezifischen Dateien in meiner Code-Basis verweist. Mein Problem dabei ist, dass ich Passwörter für alle meine Umgebungen an alle Ziele sende (natürlich zusätzlich zu SVN) und ungenutzte Konfigurationsabschnitte auf Servern liegen, die darauf warten, versehentlich verwendet zu werden.

  3. Spezifische Verbindungszeichenfolgen in der Datei machine.config und nicht in der Datei web.config. Problem: Wer erwartet schon, dass Verbindungszeichenfolgen in der machine.config zu finden sind, und die Wahrscheinlichkeit überraschender Namenskollisionen ist hoch.

  4. Geben Sie eine configSource="LocalConnectionStrings.config" an, wandeln Sie den Wert nicht um, und bearbeiten Sie die Projekt-Xml, um die Bereitstellung der Verbindungsstring-Konfiguration auszuschließen. http://msdn.microsoft.com/en-us/library/ee942158.aspx#can_i_exclude_specific_files_or_folders_from_deployment - Es ist die beste Lösung, die ich für meine Anforderungen an eine proprietäre (nicht verteilte) Webanwendung gefunden habe, aber ich habe Angst, dass eines Tages ein anderes Teammitglied kommt und die Produktionsseite aus irgendeinem Grund zum Testen kopiert, und voila! Die Produktionsdatenbank wird nun während der UAT geändert. (Update: Ich habe festgestellt, dass ich in diesem Szenario nicht die Ein-Klick-Veröffentlichung verwenden kann, sondern nur die msdeploy-Befehlszeile mit dem Parameter -skip. Der Ausschluss einer Datei wie oben ist dasselbe wie die Einstellung der Kompilieraktion "Keine" anstelle von "Inhalt" und führt dazu, dass das Paket die Datei aus dem Verteilungsziel löscht).

  5. Verdrahten Sie das Bereitstellungspaket so, dass es nach einer Verbindungszeichenfolge fragt, wenn diese noch nicht festgelegt ist (ich weiß noch nicht, wie man das macht, aber ich weiß, dass es möglich ist). Dies führt zu ähnlichen Ergebnissen wie bei #4 oben.

  6. Geben Sie eine configSource=".. \ConnectionStrings.config ". Das wäre für meine Bedürfnisse großartig, da ich die Konfiguration mit den von mir gewählten Anwendungen teilen könnte und nichts Maschinenspezifisches in meinem Anwendungsverzeichnis vorhanden wäre. Leider sind übergeordnete Pfade in diesem Attribut nicht erlaubt (wie bei 'appSettings file=""' - beachten Sie auch, dass Sie file= geschickt innerhalb einer configSource=-Referenz verwenden können).

p.s. Einige dieser Lösungen werden hier diskutiert: ASP.Net-Konfigurationsdatei -> Verbindungszeichenfolgen für mehrere Entwickler und Bereitstellungsserver

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X