FIX: Verwijzingen naar STA-objecten die zijn opgeslagen in de sessiestatus kunnen beschadigd raken als ze worden aangeroepen vanuit een gebeurtenis Session_End

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 827164 - Bekijk de producten waarop dit artikel van toepassing is.
Opmerking
Voor Microsoft.Zie NET Framework 1.0-versie van dit artikel827163.
Dit artikel is gearchiveerd. Het wordt aangeboden in de huidige vorm en wordt niet meer bijgewerkt.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

Als u de verwijzingen naar objecten van single-threaded apartment (STA) opslaan in de sessiestatus en u deAspCompatmet het kenmerkTrue, de verwijzingen mogelijk beschadigd of verloren kan raken wanneer u probeert toegang te krijgen tot de objecten uit deSession_Endde gebeurtenis.

OpmerkingMeestal kan dit probleem optreden als u de toepassing onder hoge belasting uitvoert of als u een hulpprogramma zoals Application Center Test (ACT) van stress wanneer u de toepassing uitvoert. Wanneer dit probleem optreedt, wordt een ' 0x8004e005 fout ' foutbericht in het gebeurtenislogboek.

Oorzaak

Het probleem treedt op omdat deSession_Endgebeurtenis geen uitvoeren op dezelfde thread op de sessie is gemaakt. Omdat de STA-object niet langer op dezelfde thread op de sessie is gemaakt, is marshaling toegang krijgen tot het object vereist. Hierdoor is traag.

STA-objecten kunt u opslaan in de sessiestatus. Microsoft raadt echter niet doen. Zie de sectie 'Verwijzingen' van dit artikel voor meer informatie.

Oplossing

Deze hotfix voegt een nieuwe configuratieinstelling toe aan het bestand Machine.config. De volgende Toepassingsconfiguratie van is beschikbaar nadat u de hotfix installeert.
<httpRuntime apartmentThreading=?true|false? />,
StandaardapartmentThreadingis ingesteld opFalse. Als uapartmentThreadingnaarTrue, gebeurt het volgende:
  • AlleSession_Startgebeurtenissen op STA-threads die overeenkomen met de sessie-id, ongeacht de doelpagina of de handler uitgevoerd.
  • AlleSession_Endgebeurtenissen op STA-threads die overeenkomen met de sessie-id wordt uitgevoerd
  • AspCompatwordt ingesteld opTruevoor alle pagina's behalve voor pagina's metAspCompatexpliciet is ingesteld opFalse.
OpmerkingU kunt nog steeds uitvoeren deSession_Startgebeurtenis op de STA-thread nadat u deze hotfix alsapartmentThreadingis ingesteld opFalseenAspCompatis ingesteld opTruevoor de doelpagina.

Deze hotfix werkt voor de STA-objecten die zijn opgeslagen in de sessiestatus. Deze hotfix werkt ook voor STA-object dat één niveau diep liggen, zoals geneste een.NETTO-object die in de sessiestatus opgeslagen en die een verwijzing naar een STA-object heeft. Deze hotfix werkt echter niet voor de STA-objecten die meer dan één niveau diep opgeslagen.

BelangrijkDeze hotfix bevat twee typen pakketten: een Microsoft Windows Installer-pakket en een optionele-onderdelenbeheer pakket (OCM). Als u Microsoft Windows Server 2003, moet u opgeven dat u de update voor Windows Server 2003 (OCM) Bestandsbeveiliging van Windows Server 2003 omdat de.NET Framework 1.1-bestanden. Als u een ander besturingssysteem dan Windows Server 2003, moet u het Windows Installer-pakket met blijven.

De OCM-versie van deze hotfix is beschikbaar in de volgende talen:
  • Engels (ENU)
  • Japanse (JPN)
  • Duits (DEU)
  • Frans (FRN)
Een ondersteunde hotfix is nu beschikbaar bij Microsoft, maar is alleen bedoeld in dit artikel beschreven probleem op te lossen. Alleen toepassen op systemen waarop dit specifieke probleem. Deze hotfix wellicht extra worden getest. Als u geen ernstige problemen ondervindt, is het daarom raadzaam te wachten op de volgende Microsoft.NET Framework 1.1 servicepack waarin deze hotfix.

Dit probleem onmiddellijk contact op met Microsoft Product Support Services om de hotfix te verkrijgen. Bezoek de volgende Microsoft-website voor een volledige lijst met telefoonnummers van Microsoft Product Support Services en informatie over ondersteuningskosten:
http://support.Microsoft.com/contactus/?ws=support
OpmerkingIn speciale gevallen kunnen kosten die normaal verbonden worden geannuleerd als een medewerker van Microsoft bepaalt dat een specifieke update de oplossing van uw probleem. De gebruikelijke ondersteuningskosten gelden voor extra ondersteuningsvragen die niet in aanmerking voor de specifieke update in kwestie komen.

De Engelse versie van deze hotfix heeft de bestandskenmerken (of hoger) die in de volgende tabel worden weergegeven. De datums en tijden voor deze bestanden worden weergegeven in coordinated universal time (UTC). Wanneer u de bestandsinformatie weergeeft, wordt deze naar lokale tijd geconverteerd. Het verschil tussen UTC en lokale tijd, gebruikt u deTijdzonetabblad in het onderdeel Datum en tijd in het Configuratiescherm.
   Date         Time   Version       Size       File name
   ------------------------------------------------------------------------
   18-Sep-2003  05:18  1.1.4322.947    258,048  Aspnet_isapi.dll
   18-Sep-2003  05:18  1.1.4322.947     20,480  Aspnet_regiis.exe
   18-Sep-2003  05:18  1.1.4322.947     32,768  Aspnet_state.exe
   18-Sep-2003  05:18  1.1.4322.947     32,768  Aspnet_wp.exe
   16-May-2003  01:49                   33,522  Installpersistsqlstate.sql
   16-May-2003  01:49                   34,150  Installsqlstate.sql
   18-Sep-2003  05:09  1.1.4322.947     94,208  Perfcounter.dll
   19-Sep-2003  02:43  1.1.4322.947  1,216,512  System.dll
   19-Sep-2003  02:40  1.1.4322.947    323,584  System.runtime.remoting.dll
   19-Sep-2003  02:43  1.1.4322.947  1,253,376  System.web.dll
   19-Sep-2003  02:42  1.1.4322.947    819,200  System.web.mobile.dll
   19-Sep-2003  02:41  1.1.4322.947    569,344  System.web.services.dll
   19-Sep-2003  02:44  1.1.4322.947  1,335,296  System.xml.dll
   18-Sep-2003  05:13                   14,472  Webuivalidation.js

Status

Microsoft heeft bevestigd dat dit probleem in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op' van dit artikel is.

Meer informatie

Dit pakket bevat ook een secundaire hotfix. Als uAspCompatnaarTrue, en het instellen van een STA-object dat is opgeslagen in de sessie staatNull, verschijnt een foutbericht 'NullReferenceException ' terug wanneer u de pagina opnieuw laden. Het probleem te reproduceren secundaire, plak de volgende code in eenPage_Loadde gebeurtenis.
	Session["obj"] = new Object();

	Session["obj"] = null;
Wanneer u deze pagina de eerste keer bezoekt, wordt de code correct uitgevoerd. Echter, als u de pagina opnieuw laden, ontvangt u een foutbericht 'NullReferenceException ' terug uit Microsoft ASP.NET en u weergeven niet de pagina opnieuw in de huidige sessie.

Stacktrace:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.UnsafeNativeMethods.AspCompatOnPageStart(Object obj) +0
System.Web.Util.AspCompatApplicationStep.OnPageStartSessionObjects() +90
System.Web.UI.Page.ProcessRequestMain() +44
Als uAspCompatnaarFalse, dit niet gebeurt.

Stappen om het gedrag te reproduceren

U kunt als volgt reproduceren van het probleem in de sectie 'Symptomen' van dit artikel wordt weergegeven:
  1. Microsoft Visual Basic gebruiken.NET een Visual Basic ActiveX DLL-object maken.

    OpmerkingAls u de component markerenUitvoering zonder toezicht(UE) de fout nog steeds optreedt.
  2. Maak twee functies in deDLL-BESTANDklasse:
    1. Maak een functie die een tekenreeks retourneert.
    2. Een functie die een lange parameter maken en die een LONG-waarde geretourneerd. Deze functie wordt een lus getallen van 1 toegevoegd aan het nummer dat is doorgegeven aan de functie.
  3. Maak een nieuweWebtoepassingProject twee ASPX-pagina's (Pagina1.aspx en Pagina2.aspx heeft).
  4. In het Global.asax-bestand van deSession_Startgebeurtenis gebruikenCreateObjectmaakt een exemplaar van het object dat u in stap 1 hebt gemaakt.
  5. In dePage_Loadgebeurtenis van Pagina1.aspx, aanroepen van functies die u hebt gemaakt in stap 2 van het object in de sessiestatus wordt opgeslagen.
  6. Een hyperlink maken naar Pagina2.aspx in Pagina1.aspx.
  7. In dePage_Loadgebeurtenis Pagina2.aspx oproep van deSession.Abandonmethode.
  8. Application Center Test (ACT) gebruik maken van een test de werking van de Pagina1.aspx weergeven en bekijken Pagina2.aspx records.
  9. Voer de test met tien gebruikers. Zie als fout 0x8004e005 in Viewer weergegeven.

    OpmerkingU moet het verhogen van het aantal gebruikers het probleem te reproduceren.

Referenties

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
243543INFO: STA-objecten niet opslaan in de sessie of toepassing doen
243815PRB: Sessie naar één Thread STA COM-Component op te slaan in de sessie vergrendeld
817005FIX: Ernstige prestatieproblemen optreden als u de sessiestatus bindt threads ASPCompat-modus

Eigenschappen

Artikel ID: 827164 - Laatste beoordeling: donderdag 27 februari 2014 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft ASP.NET 1.1
Trefwoorden: 
kbnosurvey kbarchive kbhotfixserver kbqfe kberrmsg kbnetframe100presp3fix kbfix kbcode kbbug kbmt KB827164 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:827164

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com