3 Stimmen

Was ist die bevorzugte Methode zum Ändern der Verbindungszeichenfolgeneinstellungen in der DAL-Klassenbibliothek bei der Bereitstellung von asp.net Web-App?

Ich habe mein asp.net-Webapp-Projekt bereitgestellt, das einen Verweis auf meine DAL-Klassenbibliothek enthält. Wie kann ich die Verbindungszeichenfolge in meiner DAL-Bibliothek ändern, nachdem ich sie bereitgestellt habe? Der DAL-Code wurde meine web.config Verbindungszeichenfolge ignoriert und versucht, den app.config-Wert zu verwenden.

Ich dachte, ich könnte eine Konfigurationsdatei bearbeiten, die mit der Klassenbibliothek verbunden ist, aber ich kann keine finden. Vorübergehend habe ich die Verbindungszeichenfolge bearbeitet und die Bibliothek neu kompiliert und bereitgestellt.

Gibt es eine Option oder eine Möglichkeit, die Projektdateien einzurichten, wo es die Werte der Verbindungszeichenfolge auf der Grundlage von im Debug-Modus kompiliert versus tun eine Freigabe kompilieren ändert. Was ist der empfohlene Weg des Umgangs mit Verbindungszeichenfolgen in Webanwendungen, die Klassenbibliotheken verweisen?

Klarstellung: die DAL-Bibliothek-Verbindungszeichenfolgen werden auch von einigen Datensätzen und L2S-Klassen (.dbml) verwendet, und ich bin nicht sicher, wie man diese ändern, um eine web.config-Datei zu verweisen, die außerhalb der Bibliothek im Web-App-Projekt sitzt.

Zurzeit verwende ich diesen Code, um das Problem mit meiner L2S-Klasse zu umgehen:

public partial class MyDataContext 
{
    partial void OnCreated()
    {

        ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["PrimaryConnectionString"];

        if (cs != null)
        {
            this.Connection.ConnectionString = cs.ConnectionString;
        }
    }
}

2voto

Marc Gravell Punkte 970173

Im Allgemeinen überlasse ich es dem Projekt auf oberster Ebene, dies zu definieren, entweder über web.config oder app.config; entweder indem ich festlege, dass die Anwendung einen Verbindungsstring mit dem Namen "FOO" enthalten soll, oder (viel besser) indem ich der aufrufenden Anwendung erlaube, den Verbindungsschlüssel, den Verbindungsstring oder die Verbindung an die DLL zu übergeben (eines davon).

Dann können Sie die web.config wie gewohnt bearbeiten...

2voto

Laz Punkte 3412

Normalerweise platziere ich die Zeichenfolge in der Datei web.config und lasse eine Klasse (möglicherweise eine globale Klasse, die verwendet wird, um Einstellungen in der web.config zu referenzieren) mit der folgenden Zeile darauf verweisen:

class Globals
{
    static string ConnectionString =
        ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
}

und sie an anderer Stelle zu verwenden:

IApartmentRepository apartmentRepository = new
    ApartmentRepository(Globals.ConnectionString);

Dies war auch der Vorschlag von Saif Khan in seiner Antwort.

Was das Ändern der Verbindungszeichenfolgen basierend auf dem Kompiliermodus betrifft, so bietet Visual Studio 2010 hierfür Unterstützung, siehe Web-Bereitstellung: Web.Config Transformation aus dem Blog des Visual Web Developer-Teams. Ich glaube nicht, dass Visual Studio 2008 kann dies out of the box tun, aber vielleicht kann es mit einer Art von Build-Skript getan werden.

0voto

Saif Khan Punkte 17922

Ich glaube nicht, dass es einen empfohlenen Weg gibt, sondern einen bevorzugten Weg. Einige speichern Verbindungszeichenfolgen in der Datei web.config, während einige in der Registrierung oder machine.config speichern, während einige zum Extrem gehen und es remote speichern... ja, das habe ich gesehen.

Die häufigste Speicherung, die ich sehe und selbst verwende, ist die Speicherung in der web.config. In meinen DAL-Objekten rufe ich die Datei web.config für den Connectionstring auf

string connStr = ConfigurationManager.ConnectionStrings["myString"].ConnectionString

Was die automatische Änderung der Verbindungszeichenfolge auf der Grundlage des kompilierten Modus der Anwendung angeht, so habe ich das noch nie gesehen. Möglicherweise müssen Sie diese Prüfung in die DAL selbst einbauen, um zu prüfen, ob der Debug-Modus "ein" oder "aus" geschaltet ist. Das würde 2 connectionstring Einträge in der web.config Datei erfordern.

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