2012-02-10 16 views
5

Ho un'applicazione asp.net che richiede alcune modifiche al file machine.config per funzionare correttamente. Sulla mia macchina di sviluppo (eseguendo windows xp), ho modificato il file machine.config nel percorso: "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727"Quale file machine.config è la mia soluzione utilizzando sul server?

Questa è la riga di codice che ho modificato, con modifiche (aggiunta di utente/passaggio):

<processModel autoConfig="true" userName="SYSTEM" password="AutoGenerate"> 

sul server (Windows server 2003) ho fatto le stesse modifiche allo stesso file nella stessa posizione. Tuttavia, quando eseguo il debug della soluzione, non funziona correttamente (non accade niente e scade, lo stesso problema che avevo sul mio computer di sviluppo prima di apportare queste modifiche al file di configurazione).

Sono giunto al fatto che la mia applicazione non sta utilizzando il file machine.config nello stesso percorso sul mio computer e sul mio server. Per confermare questo, ho aggiunto numeri casuali alla fine di userName e password in entrambi i file di configurazione. Sulla mia macchina, l'applicazione non si avvia nemmeno dopo averlo fatto. Sul server, gira e sviene allo stesso modo prima che i numeri casuali venissero aggiunti.

La mia domanda, in breve, è come faccio a capire quale file machine.config il server sta effettivamente utilizzando e/o come posso impostarlo per utilizzare quello nella posizione menzionata?

risposta

12

E 'possibile che il server è un server a 64 bit, il che significa che sarà in:

C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727

Il Il runtime a 64 bit utilizza un diverso machine.config. Le regole di base sono questo:

  1. ASP.NET 1.x utilizza %WINDIR%\Microsoft.NET\Framework\v1.1.4322
  2. ASP.NET 2.0/3.5 x86 utilizza %WINDIR%\Microsoft.NET\Framework\v2.0.50727
  3. ASP.NET 2.0/3.5 x64 utilizza %WINDIR%\Microsoft.NET\Framework64\v2.0.50727
  4. ASP.NET 4.0/4.5.x x86 utilizza %WINDIR%\Microsoft.NET\Framework\v4.0.30319
  5. ASP.NET 4.0/4.5.x x64 utilizza %WINDIR%\Microsoft.NET\Framework64\v4.0.30319
  6. per ASP.NET 5.0 utilizzando il CLR completa, questo sarà lo stesso come le posizioni ASP.NET 4.0 da t he .NET Framework 4.6 è una sostituzione in sostituzione di 4.5. Se ASP.NET 5.0 è in esecuzione su CoreCLR, non esiste alcun concetto di un file machine.config.

Quale versione di ASP.NET si utilizza dipende dalla vostra scheda ASP.NET (IIS 6) o AppPool (IIS 7+)

x64 vs x86 dipende dalla impostazione W3SVC/AppPools/Enable32BitAppOnWin64 per IIS 6 metadati, o l'AppPool in IIS 7.

+0

Entrambe le macchine sono a 32 bit, l'ho appena confermato. +1 per qualcosa che non avevo considerato anche se – turbo

+6

@turbo suppongo che si possa usare il codice 'ConfigurationManager.OpenMachineConfiguration(). FilePath' per capire dove sta cercando machine.config. Dovrai fare riferimento all'assembly 'System.Configuration'. – vcsjones

+0

Hm, mostra la stessa posizione su entrambe le macchine. Suppongo che la mia congettura fosse sbagliata. Forse il mio progetto non fa in qualche modo riferimento alla versione aggiornata (so che è necessario riavviare il servizio di amministrazione di IIS, e ho). Hai dimostrato che la mia congettura era sbagliata, ma hai risposto alla mia domanda. Grazie per l'aiuto. – turbo

Problemi correlati