Lite svårt att sätta en passande rubrik på detta "fenomen".
Även vilket forum tråden skulle placeras i så om någon anser den ligga fel så är det bara att flytta.
Såhär är det:
Jag har ett backoffice med olika rapportfunktioner som kan ta en bra stund att köra igenom för att få fram resultatet.
Om det är intressant så är det classic ASP + SQL Server 2003 som systemet körs på.
Scenario:
Jag drar igång en rapportkörning som ligger i ett backoffice på ex. http://www.mindoman.com/backoffice/reports.
Körningen tar ca 2 min att köra igenom
Under dessa 2 min denna rapport arbetar kan jag inte i en annan flik i webbläsaren surfa på några andra sidor som
innehåller ASP-kod inom samma domän (rena HTML-sidor går finfint).
Sidan står bara och laddar i väntan på att rapporten ska bli klar, typ.
MEN, om jag öppnar en ny webbläsare och surfar runt på samma domän går det hur bra som helst.
Så till frågan, vad är det som gör att jag inte kan surfa runt på en annan flik medans rapporten körs?
Är det något på serversidan som säger att "aja baja, du utnyttjar redan full kapacitet (eftersom körningarna är så tunga)
så du får allt vänta tills det finns mer plats för ditt surfande"?
Eller är det i webbläsaren denna "låsning" sker tills körningen är klar?
Jag kan tillägga att andra användare absolut inte störs av mina körningar utan det är bara på samma dator detta sker.
Nu är detta ingen "big deal" eller ett problem i sig utan det är mest av nyfikenhet jag ställer denna frågan :)
Ditt problem låter helt absurt, faktiskt. Webbläsare brukar ha en gräns på hur många samtidiga anslutningar de har mot en specifik server, men då skulle den inte ladda HTML-sidor heller. Det skulle däremot kunna förklaras av att ASP-motorn har ett begränsat antal trådar som hoggas av långa jobb, men då skulle du inte kunna öppna en ny webbläsare och surfa runt på ASP-sidor. Kvarstår således tre alternativ: (1) IIS begränsar antalet anslutningar en klient kan ha mot ASP-sidor eller att (2) du har missuppfattat problemet, eller (3) något annat ;)
Jag tror inte att det är (1), eftersom det låter mysko att det skulle jobba per webbläsare. Men du skulle ju kunna pröva att slå av cookies och se vad som händer.
vad är det som gör att jag inte kan surfa runt på en annan flik medans rapporten körs?
Hmm...
Flikar inom samma webbläsare delar normalt på en och samma ASP-session iom att ASP-sessionen upprätthålls mha en (session-)cookie by default.
... och det du upplever kommer sig alltså av att requests inom samma ASP-session körs sekventiellt by default av IIS "by design"
Concurrent Requests and Session State
Access to ASP.NET session state is exclusive per session, which means that if two different users make concurrent requests, access to each separate session is granted concurrently. However, if two concurrent requests are made for the same session (by using the same SessionID value), the first request gets exclusive access to the session information. The second request executes only after the first request is finished. (The second session can also get access if the exclusive lock on the information is freed because the first request exceeds the lock time-out.) If the EnableSessionState value in the @ Page directive is set to ReadOnly, a request for the read-only session information does not result in an exclusive lock on the session data. However, read-only requests for session data might still have to wait for a lock set by a read-write request for session data to clear.
Citatet och källan beskriver iofs ASP.NET - men samma sak gäller alltså även för "klassisk ASP".
Fördel - Du slipper t.ex. hantera MUTEX-relaterade problem i ASP-koden även för sessionsvariabler genom det defaultbeteendet (och du kan slå av begränsningen genom att deklarera sidan som "read-only" i siddirektivet om du inte har behov av att skriva värden i sessionsvariabler)
...och att det inte påverkar ".html"-sidor beror alltså på att ".html" och ".asp" internt styrs till olika handlers i IIS:en (om man inte konfigurerat om den alltså) :bire
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2