2011-05-20 19 views
16

entra nella tua impostazioni del livello della macchina IIS e aggiungereASP.NET quadro bug

<deployment retail="true" /> 

Come specificato nel http://msdn.microsoft.com/en-us/library/ms228298.aspx

Creare un nuovo progetto web, aggiungere un'etichetta e quindi il seguente codice.

protected void Page_Load(object sender, EventArgs e) 
{ 
    Label1.Text = HttpContext.Current.IsDebuggingEnabled.ToString(); 
} 

//Result: true 

Cosa mi manca?

Aggiornamento: Ho aggiornato il valore sulle versioni a 64 e 32 bit della configurazione macchina. Il server esegue IIS7.5. Il riavvio non ha aiutato.

Aggiornamento 2:

Facendo un passo attraverso V4 del quadro utilizzando Reflector ricevo il seguente codice.

public bool IsDebuggingEnabled 
{ 
    get 
    { 
     try 
     { 
      return CompilationUtil.IsDebuggingEnabled(this); 
     } 
     catch 
     { 
      return false; 
     } 
    } 
} 

internal static bool IsDebuggingEnabled(HttpContext context) 
{ 
    return MTConfigUtil.GetCompilationConfig(context).Debug; 
} 

//Here is where I lose whats going on... Either way, if what Yaur said is correct then 
//I believe that value is not only useless but dangerously misleading. 
internal static CompilationSection GetCompilationConfig(HttpContext context) 
{ 
    if (!UseMTConfig) 
    { 
     return RuntimeConfig.GetConfig(context).Compilation; 
    } 
    return GetConfig<CompilationSection>(context); 
} 

In entrambi i casi. Quello che posso confermare è che la funzionalità non sembra funzionare.

PS: @Yaur - Sì, ho provato a modificare il valore e sono ben consapevole delle alternative all'utilizzo di questo metodo, ma il punto è che questo metodo dovrebbe semplificare la distribuzione.

+0

sto guardando questo un po 'più, ma per ora notare che tali requisiti parlare di essere per IIS6, e il post di blog è dal 2006 – jcolebrand

+0

Fair point ma si noti che quella pagina è quella di Framework 4. Sarebbe bello se fossero specifici se i "Requisiti" fossero "Requisiti minimi" o "Requisiti assoluti" –

+0

Sì, lo so. Quindi il trucco "retail" si applica ai binari compilati, ma non sembra influenzare il contesto attuale, ma riflette ... sembra solo che influenzi le tracce, non le cose di debug. Certo, devi eseguire il debug per la traccia, ma non devi avere traccia per il debug – jcolebrand

risposta

8

Secondo: http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx, dovrebbe forzare:

<system.web> 
    <compilation debug="false"> 
</system.web> 

Avete riavviato il server? Quale machine.config hai modificato?

+0

Questo è il punto, la mia comprensione è la sua supposizione di sovrascrivere le impostazioni di web.config. No? –

+0

Da mdsn: "Quando retail è impostato su true, ASP.NET disabilita ** certe ** impostazioni di configurazione come output di traccia, errori personalizzati e funzionalità di debug." – mathieu

+0

Giusto? "e funzionalità di debug" esattamente! –

7

Guardando HttpContext in reflector, tutto questo metodo è caricare il valore trovato nella sezione di compilazione. Quindi imposta quello come suggerito da Mathieu e tu dovresti essere d'oro.
Inoltre (se ci si preoccupa) genererà un'eccezione se si esegue sotto mono.

dal 2,0 versione di System.Web:

chiama

CompilationUtil.IsDebuggingEnabled(this);

che chiama

RuntimeConfig.GetConfig(context).Compilation.Debug;

Compilation.Get restituisce

(CompilationSection) this.GetSection("system.web/compilation", typeof(CompilationSection), ResultsIndex.Compilation);

la versione 4.0 è un po 'diversa ... in base a quello che posso dire sembra che la "roba extra" è il supporto multitargeting. Quindi se stai prendendo di mira.net 4 e l'impostazione <compilation debug="false"> non ha funzionato provare seguendo l'esempio here e utilizzare

<system.web> 
    <compilation debug="false" targetFramework="4.0"> 
</compilation> 

invece

+0

Guardando il codice attraverso il riflettore, non sono convinto che tu abbia ragione. Mi sembra che acceda a una sorta di oggetto "stato di compilazione globale" (che a me sembra più logico). Guarderò oltre e postback. –

+0

@Maxim Gershkovich più al punto hai provato a cambiare questo valore e visto che non funziona? – Yaur

+0

@Maxim Gershkovich ha aggiornato la risposta per riflettere .net4 opzioni – Yaur