2009-09-14 14 views
50

Quando io sono il debug sul mio Windows 7 macchina IIS7, ottengo questo errore durante un debug:Perché il debug mantiene il timeout in IIS7?

Il processo del server web che si stava debug è stato terminato da IIS. questo può essere evitato configurando l'impostazione del pool di applicazioni in IIS. vedi l'aiuto per ulteriori dettagli.

Cosa sto sbagliando?

risposta

92

Dead image link

Quando si esegue il debug, IIS non servizio di eventuali altre richieste fino a quando si è fatto passando attraverso il codice. Ciò include la richiesta "ping" inviata da IIS a se stessa. Dal momento che IIS non risponde da solo, decide di chiudersi, che interrompe immediatamente il debug.

La soluzione è di aumentare il tempo massimo di risposta Ping nelle impostazioni del pool di applicazioni dal suo valore predefinito di 90 secondi. Impostalo su qualcosa che ti dia abbastanza tempo per eseguire il debug del tuo codice (come forse 300 secondi).

Microsoft ha una scrittura prolissa here oppure è sufficiente osservare la bella immagine.

-

Edit: Altri hanno suggerito impostazione "Ping Enabled" a false. Ci sono diversi motivi per cui preferisco mantenerlo in vigore, solo con un intervallo più ampio, ma il più importante è che (molto probabilmente) avrai il ping di elaborazione dell'opera abilitato in produzione, e dovresti sforzarti di sviluppare ed eseguire il debug con una configurazione è il più vicino possibile alla produzione. Se NON hai il ping abilitato in produzione, allora disabilitalo anche localmente.

+0

Perché non dovresti semplicemente usare l'impostazione proprio sopra per disabilitare completamente il ping? –

+2

@Paul Betts: perché si desidera eseguire il mirroring della produzione il più fedelmente possibile. Disabilitare completamente il ping è un po 'draconiano quando tutto ciò che serve è aumentare l'intervallo di ping. – Portman

+0

Qualcuno può dirmi se questo problema si applica anche agli script a esecuzione prolungata che non vengono sottoposti a debug o che il thread/processo che esegue uno script a esecuzione prolungata risponde ancora al ping? – Rich

2

IIS ha una caratteristica di salute-checking che controlla periodicamente per vedere se un processo di lavoro IIS è appeso o in altro modo unusuable. Se un processo di lavoro viene arrestato nel debugger, sembra non sano dal punto di vista di IIS, e IIS lo uccide e fa girare un nuovo processo.

Per modificare questo comportamento (sulla workstation di sviluppo, non si desidera disabilitare questo in produzione!) Andare allo strumento di gestione IIS, selezionare il nodo Pool di applicazioni nel riquadro di sinistra e fare clic con il pulsante destro del mouse sull'app pool in cui risiede la tua app e scegli "Impostazioni avanzate". Da lì, nella sezione "modello di processo", impostare "Ping abilitato" su False. Potresti anche voler impostare il timeout di inattività come un numero molto grande.

Vedere this IIS.NET article per ulteriori discussioni su questo problema e uno screenshot. Vedere this TechNet article per come impostare queste impostazioni tramite codice/script al di fuori dello strumento di amministrazione.

0

Se si dispone di microsoft scom in esecuzione e configurato in cui si lavora (presupponendo che questo non è un progetto per divertimento) e si è in grado di creare un Management Pack per esso o conoscere qualcuno che è, che può aiutare a individuare ciò che è causando il problema. Mi rendo conto che è un campo lungo, ma se questo descrive il tuo scenario è ciò che farei se non venisse trovata un'altra soluzione.

Problemi correlati