Domanda

Questo problema ha molti di noi sconcertati in ufficio. Siamo tutti nuovi nella distribuzione di app ASP.NET in una Web farm e sono appena uscito dalle idee.

Abbiamo una web farm e l'applicazione viene copiata su tutti. Tuttavia, stiamo riscontrando un problema ..

Viene generata un'eccezione quando si cerca di ottenere le impostazioni da impostazioni delle app . A seguito di ulteriori accertamenti, si scopre che il nodo in realtà non utilizza il Web.Config locale, ma ricade nel Web.Config nella cartella .NET framework (abbiamo lo ha dimostrato aggiungendo le chiavi lì, che appaiono in una pagina di prova).

Devo mancare qualcosa, perché la mia comprensione è che fintanto che il file è lì, IIS dovrebbe usarlo! Uno dei server sembra funzionare bene!

Ecco un elenco di ciò che abbiamo confermato:

  • Il file di configurazione si trova nella directory dell'app.
  • Il contenuto del file è corretto.
  • Quando visualizzi il file da IIS > Sito > Proprietà > ASP.NET > Modifica Configura il contenuto corretto.

Tuttavia, in fase di esecuzione il file utilizzato è quello globale ( windows \ ms .net \ framework \ v2 \ config \ web.config ).

Qualcuno ha qualche suggerimento su cosa potrebbe andare storto? Apprezzo tutto l'aiuto che posso ottenere!

Grazie.

Rob

È stato utile?

Soluzione 3

Prima di tutto, grazie mille ai ragazzi che hanno risposto, apprezzo l'aiuto!

Solo un aggiornamento su questo problema. È stato difficile!

Si scopre che non c'era niente di sbagliato nel codice o nella configurazione.

Sembra che stia succedendo qualcosa di strano con la server farm (di cui non ho assolutamente alcun controllo o accesso). Il sysadmin ha ricostruito la farm, ha ridistribuito la soluzione e tutto ha funzionato bene.

Suppongo che non sapremo mai cosa non andava, ma almeno sappiamo che non era un problema di sviluppo!

Grazie ancora, Rob

Altri suggerimenti

Questa è la gerarchia per la configurazione ASP.NET. Forse questo potrebbe aiutare a capire quali impostazioni si sovrascrivono.

Server

Machine.config: il file Machine.config contiene lo schema ASP.NET per tutte le applicazioni Web sul server. Questo file si trova nella parte superiore della gerarchia di unione della configurazione.

Web principale

Web.config: il file Web.config per il server è archiviato nella stessa directory del file Machine.config e contiene i valori predefiniti per la maggior parte delle sezioni di configurazione di system.web. In fase di esecuzione, questo file viene unito secondo dall'alto nella gerarchia di configurazione.

Sito web

Web.config: il file Web.config per un sito Web specifico contiene impostazioni che si applicano al sito Web ed ereditano verso il basso attraverso tutte le applicazioni e le sottodirectory ASP.NET del sito.

Directory radice dell'applicazione ASP.NET

Web.config: il file Web.config per una specifica applicazione ASP.NET si trova nella directory principale dell'applicazione e contiene impostazioni che si applicano all'applicazione Web ed ereditano verso il basso attraverso tutte le sottodirectory del suo ramo.

Sottodirectory dell'applicazione ASP.NET

Web.config: il file Web.config per una sottodirectory dell'applicazione contiene impostazioni che si applicano a questa sottodirectory ed ereditano verso il basso attraverso tutte le sottodirectory del suo ramo.

Directory dell'applicazione client

ApplicationName.config: il file ApplicationName.config contiene le impostazioni per un'applicazione client Windows (non un'applicazione Web).


Comprendere quali file e cartelle ASP.NET sono ereditati tramite cartelle e applicazioni è molto importante per lo sviluppo e la risoluzione dei problemi.

Ecco un breve riassunto:

  • i file web.config ereditano fino in fondo l'albero, oltre tutti i confini dell'applicazione.
  • global.asax vive solo all'interno della sua applicazione
  • / bin e / app_ {cartelle} vivono solo all'interno della loro applicazione

Quindi, ciò significa che qualsiasi cosa impostata nel file web.config root erediterà l'intero sito, anche se alcune cartelle sono contrassegnate come applicazioni.

Dove questo diventa disordinato è se il file web.config ha riferimenti agli assembly ma le applicazioni secondarie non hanno quegli assembly. Ad esempio, supponiamo che tu abbia un Modulo HTTP configurato nella radice del sito e referenziato dal file web.config del sito. Se hai una sotto-applicazione chiamata / sottocartella contrassegnata come applicazione, allora / sottocartella tenterà di caricare il gestore HTTP da / sottocartella / bin. Dal momento che non esiste, verrà generato un errore.

Ci sono molti modi per aggirare questo. Probabilmente il più pulito se il gestore HTTP non è necessario in / sottocartella è "rimuovendo" il riferimento aggiungendo una clausola nel file /subfolder/web.config. Puoi farlo con. Ecco un esempio di come rimuovere un modulo HTTP in una sottocartella:

<httpModules>
  <remove name="ErrorLog"/>
</httpModules>

Ecco come potrebbe apparire il sito web.config:

<httpModules>
      <add name="ErrorLog"  type="GotDotNet.Elmah.ErrorLogModule, GotDotNet.Elmah, Version=1.0.5527.0, Culture=neutral, PublicKeyToken=978d5e1bd64b33e5" />
</httpModules>print("code sample");

Da quello che dici nei commenti, ti suggerisco di andare con " Try and Error " ;.

Cosa succede se si inserisce una voce errata per scopo? L'applicazione non riesce o non influisce su nulla?

Prova a copiare il contenuto, quindi elimina e ricrea il file da zero.

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