Aus unterschiedlichen Gründen kann gewünscht sein, die Verbindungsinformationen zur Datenbank nicht in der Web.config – Datei vorzuhalten.
Ein Grund kann sein, dass für Dashboards zusätzliche externe Datenbankverbindungen konfiguriert werden sollen, die bei einem Update nicht aus der Web.config gelöscht werden sollen.
Ein anderer Grund kann sein. dass für den Datenbankzugriff wird nicht immer eine integrierte Anmeldung gewünscht wird. Entweder weil der IIS-App-Pool-User nicht in derselben Security-Domain ist oder aber die Datenbank das gar nicht unterstützt bzw. es nicht konfiguriert ist. In diesen Fällen würden die Passwörter als Klartext in der Web.config auftauchen und damit Teil des Deployment-Pakets.
Statt dessen sollte eine eigene Datei mit Verbindungsdaten auf den Webserver gelegt werden, die nicht Teil der Auslieferung ist. Diese kann vom Administrator ggf. mit sehr strengen Leseberechtigungen geschützt werden (nur App-Pool-User).
Deren Name muss mit “Custom” beginnen, damit sie beim Update nicht gelöscht wird.
Beispiel:
web.config
<connectionStrings configSource="CustomConnections.config"/>
CustomConnections.config
<connectionStrings>
<add name = "DefaultConnection" connectionString = "Data Source=localhost;Initial Catalog=bacrm_mm5;Integrated Security=True" providerName = "System.Data.SqlClient" />
</connectionStrings>
Aufbau des Connection-Strings
Auf dieser Seite befindet sich eine Beschreibung, wie die Connection-Strings aufgebaut sein müssen: https://docs.devexpress.com/Dashboard/117284/common-features/custom-connection-strings-for-data-sources
Beispiele für unterschiedliche Connection-Strings:
SQL Server
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="data source=servername;
initial catalog=dbname; User Id=xxxxxx; Password=xxxxxx;" />
oder:
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="data source=servername;
Integrated Security=True;initial catalog=dbname" />
PostgreSQL
Im Falle von SQL Server muss das Schlüsselwort „initial catalog” angegeben werden. Für PostgreSQL gibt es ein solches Schlüsselwort nicht, daher muss der XPO-Provider direkt angegeben werden:
<add name="DefaultConnection" providerName="Npgsql" connectionString="XpoProvider=Postgres;Server=server;
User ID=xxxxxx;Password=xxxxxx;Database=dbname;Encoding=UNICODE" />