Situazione: applicazione ASP classica, utilizzando un pool di applicazioni personalizzato. Impostazioni predefinite.IIS7: serve solo una pagina alla volta. È una cosa che mi rende felice!
Su alcune macchine IIS7, IIS decide di servire solo una pagina alla volta. Quindi se carichi più pagine da un sito, ognuna deve essere caricata in successione.
ad es. Se carico http://foo.com/default.asp da un browser, e da un altro computer carico http://foo.com/differenturl.asp, il primo deve finire prima che l'altro venga caricato. È quasi come se il processo w3p fosse a thread singolo.
Nota: esiste un'impostazione denominata MaxProcesses in Impostazioni avanzate per IIS che dice "Imposta questo valore maggiore di 1 per creare un giardino Web" (qualunque sia). Questo NON risolve il problema perché genera più processi con il proprio stato di sessione ecc. E quando carichi http://foo.com/default.asp non c'è modo di garantire che tu venga assegnato allo stesso processo.
Il problema si è rivelato perché abbiamo una pagina di diagnostica scritta in ASP che crea e controllo ActiveX che carica un URL sul sito Web e restituisce i risultati.
Quindi, diagnostica.asp carica e nel codice sul lato server crea un piccolo controllo Web che carica (si pensi al controllo XMLHTTP) default.asp sullo stesso server.
Questa pagina non avrà MAI terminato il caricamento, perché il server è in attesa della fine della pagina diagnostics.asp prima di servire la pagina default.asp. Deadlock!
Questo funziona perfettamente su ogni macchina IIS6, e credo che ci siano alcuni server IIS7 in cui funziona anche bene.
Ho verificato che non è un risultato della nostra bizzarra diagnostica. Il caricamento di più schede da una macchina o anche da macchine separate mostrerà che il processo Web le gestisce una alla volta.
Risposta corretta da AnthonyWJones: il debug lato server è stata attivata in IIS7. Questo mette IIS in modalità single threaded.
crossposted qui http://forums.iis.net/p/1155632/1894991.aspx#1894991 –
Potresti scrivere quale parte della risposta selezionata è stata d'aiuto? Qual è stata la ragione del problema? –
Lo farò quando lo scoprirò. Non lo so ancora visto che non riesco a riprodurre sulla mia macchina, solo un cliente (ed è in vacanza). –