Oprava: Odkazy na objekty STA, je stav relace v uloženo pravděpodobně stane poškozený Pokud kterým jsou volané z události Session_End

Překlady článku Překlady článku
ID článku: 827164 - Produkty, které se vztahují k tomuto článku.
Poznámka
Microsoft .NET Framework 1.0 verzi tohoto článku naleznete 827163.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Pokud stav relace ukládat odkazy na objekty jedním podprocesem apartment (STA) a nastavit atribut AspCompat na hodnotu true, odkazy může být poškozena nebo může dojít při pokusu získat přístup k objektům z události Session_End ztraceny.

Poznámka: Obvykle se tomuto problému může dojít, pokud spustíte aplikaci pod vysoké zatížení nebo pokud používáte nástroj zátěžové například Application Center Test (ACT) při spuštění aplikace. Když nastane tento problém obdržíte "0x8004e005 chyba" chybová zpráva v protokolu událostí.

Příčina

K problému dochází, protože Session_End události nemá spustit na stejném podprocesu na byla relace vytvořena. Protože objekt STA je již ve stejném podprocesu na byla relace vytvořena, zařazování je nutné získat přístup k objektu. Toto chování způsobuje snížení výkonu.

STA objekty můžete ukládat do stavu relace. Společnost Microsoft však nedoporučuje to provést. Další informace naleznete v "Odkazy" v tomto článku.

Řešení

Tato oprava hotfix přidá nové nastavení konfigurace souboru. Po instalaci opravy hotfix je k dispozici následující konfigurace aplikace.
<httpRuntime apartmentThreading=”true|false” />,
Standardně apartmentThreading nastavena na hodnotu false. ApartmentThreading nastavena na hodnotu true, dojde k následující chování:
  • Všechny události Session_Start se spustit na podprocesů STA, které odpovídají ID relace ohledu cílovou stránku nebo obslužnou rutinu.
  • Všechny události Session_End spustit na podprocesů STA, které odpovídají ID relace.
  • AspCompat stane nastavena na hodnotu true pro všechny stránky kromě pro stránky, které mají AspCompat explicitně nastavena na false.
Poznámka: Událost Session_Start můžete stále spustit v podprocesu STA po použití této opravy hotfix Pokud apartmentThreading nastavena na hodnotu false a AspCompat je nastavena na hodnotu true pro cílovou stránku.

Tato oprava hotfix funguje pro objekty STA, které jsou uloženy ve stavu relace. Tato oprava hotfix funguje také pro STA objekt, který je vnořen jedné úrovně důkladné například .NET objekt, který je uložen ve stavu relace a, který má odkaz na objekt STA. Tato oprava hotfix však nefunguje pro objekty STA, které jsou uloženy hluboká více než jednu úroveň.

Důležité: Tato oprava hotfix obsahuje dva typy balíčků: Instalační služba Microsoft Windows Installer balíček a balíčku správce volitelných součástí (OCM). Pokud používáte Microsoft Windows Server 2003, musíte určit vyžadují aktualizaci Windows Server 2003 (OCM), protože Ochrana souborů systému Windows Server 2003 sleduje soubory .NET Framework 1.1. Pokud používáte operační systém než Windows Server 2003, musí pokračovat použít balíček Instalační služba Windows Installer.

OCM verze této opravy hotfix je k dispozici v následujících jazycích:
  • Angličtina (CSY)
  • Japonštinu (JPN)
  • Němčina (DEU)
  • Francouzština (FRN)
Společnost Microsoft má nyní k dispozici podporovanou opravu hotfix, která je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze v systémech, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud není použití tento problém, doporučujeme počkat na další aktualizaci service pack pro rozhraní Microsoft .NET Framework 1.1, který obsahuje tuto opravu hotfix.

Potřebujete-li odstranit tento problém okamžitě, obraťte se na služby podpory společnosti Microsoft, kde můžete tuto opravu hotfix získat. Úplný seznam telefonních čísel služeb technické podpory společnosti Microsoft a informace o cenách technické podpory naleznete na tomto webu společnosti Microsoft:
http://support.microsoft.com/contactus/?ws=support
Poznámka: Poplatky, které je třeba obvykle zaplatit za telefonní hovory, mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft zjistí, že oznámený problém lze vyřešit konkrétní aktualizací. Další dotazy a žádosti o odbornou pomoc, které se netýkají této zvláštní opravy, podléhají běžným sazbám za poskytnutí odborné pomoci.

Anglická verze této opravy hotfix má následující nebo vyšší atributy souborů. Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.
   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

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech společnosti, které jsou uvedeny v části "Platí pro" v tomto článku.

Další informace

Tento balíček oprav hotfix také zahrnuje sekundární opravu hotfix. Pokud AspCompat nastavena na hodnotu true a nastavit STA objekt, který je uložen stav relace na hodnotu null, můžete obdržet chybovou zprávu "NullReferenceException" při načtení stránky. Sekundární problém reprodukovat, vložte následující kód uvnitř události Page_Load.
	Session["obj"] = new Object();

	Session["obj"] = null;
při návštěvě této stránky první kód správně spuštěn. Pokud načtením stránky však zobrazí chybová zpráva "NullReferenceException" z Microsoft ASP.NET a nelze zobrazit stránku znovu v aktuální relaci.

Trasování zásobníku:
[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
Pokud AspCompat nastavena na hodnotu false, tomuto chování nedochází.

Kroky pro reprodukci tohoto chování

Zobrazí se v tomto článku v části "Příznaky" problém reprodukovat, postupujte takto:
  1. Slouží k vytvoření objektu ActiveX DLL jazyka Microsoft Visual Basic .NET.

    Poznámka: Pokud označit komponentu jako Unattended Execution (EU) došlo k chybě stále dochází.
  2. Vytvořte dvě funkce v DLL třídy:
    1. Vytvořte funkci, která vrací řetězec.
    2. Vytvořte funkci, která přebírá parametr dlouhé a, které vrátí hodnotu LONG. Tato funkce provede smyčku sečte čísla od 1 číslo předaný funkci.
  3. Vytvoření nového projektu Webovou aplikaci, která má dvě stránky ASPX (Page1.aspx a Page2.aspx)
  4. V souboru Global.asax Session_Start událostí pomocí CreateObject vytvořte instanci objektu, který jste vytvořili v kroku 1.
  5. V události Page_Load Page1.aspx volání buď funkce, které jste vytvořili v kroku 2 z objektu, který je uložen stav relace.
  6. Vytvoření hypertextového odkazu na Page2.aspx Page1.aspx.
  7. V události Page_Load Page2.aspx volání metody Session.Abandon.
  8. Application Center Test (ACT) použít k vytvoření test záznamy operace zobrazením Page1.aspx a zobrazením Page2.aspx.
  9. Spustit test s deseti uživateli. Pokud chyba 0x8004e005 se zobrazí v událostí prohlížeče naleznete.

    Poznámka: Pravděpodobně nutné zvětšit počet uživatelů problém reprodukovat.

Odkazy

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
243543INFORMACE: Úložiště není STA objekty v Session nebo Application
243815PRB: Ukládání komponenta COM STA v relaci uzamčení relace dolů jeden podproces
817005Oprava: Závažné výkonu problémy při vázání stavu relace k podprocesy v režimu ASPCompat

Vlastnosti

ID článku: 827164 - Poslední aktualizace: 28. února 2014 - Revize: 1.7
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kberrmsg kbnetframe100presp3fix kbfix kbqfe kbcode kbbug KB827164 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:827164

Dejte nám zpětnou vazbu

 

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