Ich sehe nicht, wie Sie mit Windows Azure die Konfiguration einer Anwendung ändern können, wenn Sie keine andere Wahl haben, als die Konfigurationseinstellungen in web.config (oder app.config) zu speichern.Azure-Rollenkonfigurationsverwaltung
Zum Beispiel ...
Oft Projekte Verwendung einer 3rd-Party-Bibliothek machen, die starke Nutzung von web.config macht. Die Verwendung von web.config kann Verbindungszeichenfolgen, App-Einstellungen oder benutzerdefinierte Konfigurationsabschnitte umfassen. Ein gutes Beispiel dafür ist ELMAH. Eine Datei web.config für ELMAH könnte wie folgt aussehen:
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<connectionStrings>
<add
name="MyElmahDatabase"
providerName="System.Data.SqlClient"
connectionString="Server=tcp:myServer.database.windows.net,1433;Database=myDB;User [email protected];Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" />
</connectionStrings>
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="MyElmahDatabase" />
</elmah>
</configuration>
Es gibt ein paar Probleme hier:
Es gibt keine Möglichkeit für mich, zu aktualisieren oder zu ändern, ob Remote-Zugriff aktiviert ist zwischen Dienstkonfigurationen.
Es gibt keine Möglichkeit für mich, die ELMAH-Verbindungszeichenfolge zwischen Dienstkonfigurationen zu aktualisieren oder zu ändern. Diese
ist, weil die web.config verpackt ist wie in die .cspkg Datei und ELMAH wird sich nicht an den Service-Konfigurationseinstellungen (das ist der einzige Weg, die ich Konfigurationseinstellungen zwischen Service-Konfigurationen variieren kann).
ich von vielen anderen Beispielen denken kann, wo dies ein Problem ist ...
- Alle Datenzugriffs Frameworks, die direkt an dem Verbindungszeichen Abschnitt.
- Alle benutzerdefinierten Konfigurationseinstellungen, die ich erstellen muss.
... um nur zwei zu nennen.
Fehle ich etwas oder ist dies eine erhebliche Lücke in der Konfigurationsverwaltung von Windows Azure?
EDIT
Aus der Antwort und Kommentare unten sieht es aus wie das ist etwas, das nicht gut unterstützt wird. Ich denke, dass die Verwaltung mehrerer Lösungskonfigurationen zur Unterstützung verschiedener Konfigurationsprofile eine sehr schwache Lösung ist. Ich sollte die Lösung nicht für jedes Konfigurationsprofil neu erstellen müssen, das ich brauche (es wird wahrscheinlich einige geben). Zusammenstellung ist nicht gleich Konfiguration.
Ich frage mich, ob es eine Möglichkeit gibt, die .cspkg-Datei zu ändern, da es nur eine Zip-Datei ist. Laut Dokumentation this können Sie unter Linux.
Ich habe in der .cspkg Datei auf dem Manifest sah und es sieht wie folgt aus:
<PackageManifest version="2">
<Encryption keytype="1" />
<Contents hashtype="1">
<Item name="MyApp.Web.UI_<GUID>.cssx" hash="AED69299C5F89E060876BC16BD3D6DE5130F6E62FFD2B752BAF293435339B7E2" uri="/MyApp.Web.UI_<GUID>.cssx" />
<Item name="MyApp.Web.Services_<GUID>.cssx" hash="7AC81AFF642E4345173C8470C32A41118A4E3CFD4185B82D0ADA44B71057192D" uri="/MyApp.Web.Services_<GUID>.cssx" />
<Item name="SMPackage_<GUID>.csmx" hash="B5E6B83B62AF64C7C11CAC1A394ABBF15D7DB7667A773C5284CE5BE95C5834E9" uri="/SMPackage_<GUID>.csmx" />
<Item name="SDPackage_<GUID>.csdx" hash="F34B7C02A551D82BAD96881E2DA9447D0014D49B47CCB3840475BDC575234A7D" uri="/SDPackage_<GUID>.csdx" />
<Item name="NamedStreamPackage_<GUID>.csnsx" hash="FA2B5829FF5D9B2D69DCDDB0E5BDEE6B8B0BC09FFBF37DAEEE41CF3F3F4D0132" uri="/NamedStreamPackage_<GUID>.csnsx" />
</Contents>
<NamedStreams>
<Stream name="RequiredFeatures/MyApp.Web.Services/1.0" />
<Stream name="RequiredFeatures/MyApp.Web.UI/1.0" />
<Stream name="SupportData/MyApp.Web.Services/1.0" />
<Stream name="SupportData/MyApp.Web.UI/1.0" />
</NamedStreams>
</PackageManifest>
Leider, wenn ich den Hash-Wert des unverändert „MyApp.Web.UI_.cssx“ neu berechnen Datei, mein Hash unterscheidet sich von dem im Manifest.
Hash aus manifestieren: AED69299C5F89E060876BC16BD3D6DE5130F6E62FFD2B752BAF293435339B7E2
Meine berechneten Hash: E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855
Bitte beachte, dass ich noch nicht die Datei geändert wird, so dass der Hash gleich sein sollte.
Das deutet darauf hin, dass ich es falsch berechne. Meine Methode war wie folgt:
class Program
{
static void Main(string[] args)
{
using (FileStream fs = new FileStream(args[0], FileMode.Open))
{
ComputeHash(new SHA256Managed(), fs);
}
}
private static void ComputeHash(HashAlgorithm hashAlgorithm, Stream stream)
{
byte[] hash = hashAlgorithm.ComputeHash(stream);
string hashString = BitConverter.ToString(hash);
Console.WriteLine(hashString.Replace("-", string.Empty));
Console.WriteLine();
}
}
Die Dokumentation Link oben, schlägt es einfach ist (jedenfalls unter Linux) die Hash neu zu berechnen.
Kann jemand die Hashes neu berechnen?
Sie .cscfg Dateien für alle configurables für Ihr Paket verwenden können. –
Das wird nicht funktionieren - ELMAH (und andere Frameworks) werden keine Konfigurationsdaten in .cscfg ansehen. –
Nun, soweit ich weiß, ist nur eine mögliche Konfigurationsmethode für azure-Pakete .cscfg-Dateien. Für die Frameworks wie ELMAH müssen Sie möglicherweise einen Workaround wie die dynamische Änderung der Konfiguration finden. Aber ich denke, es gibt viele Experten von azure auf Stackoverflow, die eine viel bessere Antwort anbieten könnten. Auch das ist eine sehr interessante und wichtige Frage. –