Domanda

Per ASP.Net distribuzione di applicazioni che tipo di informazioni (se del caso) sono la conservazione in macchina.config?

Se non lo stai usando, come la gestione ambientale, le impostazioni di configurazione specifiche che possono variare per ogni ambiente?

Sto cercando alcune "buone pratiche" e i vantaggi e le insidie di ogni.Stiamo per distribuire una nuova applicazione per la produzione in due mesi e ho avuto un po ' di latitudine in questi tipi di decisioni.Voglio fare in modo che mi sto avvicinando le cose nel miglior modo possibile e cercare di evitare di scattare a me stesso in piedi in una data successiva.

FYI stiamo utilizzando (computer.config) attualmente solo per la connessione al DB informazioni e l'archiviazione di tutte le altre variabili che potrebbero cambiare in una configurazione della tabella nel database.

È stato utile?

Soluzione

Stiamo valutando la possibilità di utilizzare la macchina.config per aggiungere un tasto per l'ambiente, e quindi avere una sezione nel web.la configurazione che è excactly lo stesso per tutti gli ambienti.In questo modo siamo in grado di fare un "vero" XCopy di distribuzione.

E. g.nella macchina.config per ogni computer (locale dev postazioni di lavoro, stage server, creare il server, server di produzione), aggiungiamo il seguente:

<appSettings>
    <add key="Environment" value="Staging"/>
</appSettings>

Quindi, qualsiasi elemento di configurazione che è ambiente specifiche ottiene l'ambiente aggiunte, in questo modo:

<connectionStrings>
    <add name="Customers.Staging" provider="..." connectionString="..."/>
</connectionStrings>
<appSettings>
    <add key="NTDomain.Staging" value="test.mydomain.com"/>
</appSettings>

Un problema che non abbiamo una soluzione per è come attivare dire la traccia nel web.config per l'ambiente di debug e non per vivere l'ambiente.

Un altro problema è che il live connectionstring incl.username e password sono ora nell'Origine del sistema di Controllo.Questo, tuttavia, non è un problema per noi.

Altri suggerimenti

Se si bilanciamento del carico dei server, è ASSOLUTAMENTE necessario assicurarsi che la macchina la chiave è la stessa su tutti i server.Il Viewstate è supposto per essere indipendente dal server, ma non è, quindi avrai il viewstate errori di danneggiamento se la macchina la chiave non è la stessa in tutti i server.

<machineKey validationKey='A130E240DF1C49E2764EF8A86CEDCBB11274E5298A130CA08B90EED016C0
14CEAE1D86344C29E67E99DF83347E43820050A2B9C9FC89E0574BF3394B6D0401A9'
decryptionKey='2CC37FFA8D14925B9CBCC0E3B1506F35066FEF33FEB4ADC8' validation='SHA1'/>

Da: http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx

PS certo che si può enableViewStateMAC="false", ma non.

Usiamo la macchina.config sul nostro server di produzione di imposta/rimuovi configurazione specifici che sono importanti per la produzione e non vogliamo mai dimenticare di impostare loro.

Queste sono le 2 più importanti:

<system.web>
    <deployment retail="true" />
    <healthMonitoring enabled="true" />
</system.web> 

Io uso la macchina.config, non solo per ASP.NET ma per complessivi config così.Ho implementato un algoritmo di hash (Tiger) in C# e voleva essere disponibile tramite richiesta della macchina.Così, registrato il mio assembly nella global assembly cache e ' aggiunto il seguente macchina.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <mscorlib>
        <cryptographySettings>
            <cryptoNameMapping>
                <cryptoClasses>
                    <cryptoClass Tiger192="Jcs.Tiger.Tiger192, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
                    <cryptoClass Tiger160="Jcs.Tiger.Tiger160, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
                    <cryptoClass Tiger128="Jcs.Tiger.Tiger128, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
                </cryptoClasses>
                <nameEntry name="Tiger" class="Tiger192"/>
                <nameEntry name="TigerFull" class="Tiger192"/>
                <nameEntry name="Tiger192" class="Tiger192"/>
                <nameEntry name="Tiger160" class="Tiger160"/>
                <nameEntry name="Tiger128" class="Tiger128"/>
                <nameEntry name="System.Security.Cryptography.HashAlgorithm" class="Tiger192"/>
            </cryptoNameMapping>
            <oidMap>
                <oidEntry OID="1.3.6.1.4.1.11591.12.2" name="Jcs.Tiger.Tiger192"/>
            </oidMap>
        </cryptographySettings>
    </mscorlib>
</configuration>

Questo permette al mio codice è questo:

using (var h1 = HashAlgorithm.Create("Tiger192"))
{
   ...
}

e non c'è dipendenza Jcs.Tiger.dll assemblea nel mio codice, hard o soft.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top