Düzeltme: Kullanıcılar bir Session_End olayı çağrılan, O oturum durumu içinde depolanan STA nesnelere başvurular bozuk dönüşüyor

Makale çevirileri Makale çevirileri
Makale numarası: 827164 - Bu makalenin geçerli olduğu ürünleri görün.
Duyuru
Bu makalede, Microsoft .NET Framework 1.0 sürümü için bkz: 827163.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Oturum durumuna başvurularınızı tek iş parçacıklı grup (STA) nesnelere depolamak ve AspCompat özniteliği true olarak ayarlamak, başvuruları bozulabilir veya Session_End olayından nesnelere erişim sağlamaya çalıştığınızda kaybolmuş olabilir.

Not Genellikle, yüksek yükler altında uygulama çalıştırıyorsanız veya bir uygulamayı çalıştırdığınızda, Application Center Test (ACT) gibi bir <a0>zorlama aracı kullanırsanız, bu sorun oluşabilir. Bu sorun oluştuğunda, aldığınız bir "0x8004e005 hatası" hata iletisi, olay günlüğünde.

Neden

Sorun, oturumun üzerinde oluşturulduğu iş parçacığı üzerinde çalışacak şekilde Session_End olay olmaması nedeniyle oluşur. STA nesne artık oturumun üzerinde oluşturulduğu iş parçacığı olduğundan, sıralama nesnesine erişmek için gereklidir. Bu davranış, performansın düşmesine neden.

Oturum durumu, STA nesnelerini saklayabilirsiniz. Ancak, Microsoft bunu bunu yapmanızı önermez. Daha fazla bilgi için, bu makalenin "Başvurular" bölümüne bakın.

Çözüm

Bu düzeltme, yeni bir yapılandırma ayarı Machine.config dosyasına ekler. Düzeltmeyi yükledikten sonra aşağıdaki uygulama yapılandırması kullanılabilir.
<httpRuntime apartmentThreading=”true|false” />,
ApartmentThreading varsayılan olarak, false olarak ayarlanır. ApartmentThreadingtrue olarak ayarlarsanız, aşağıdaki davranış oluşur:
  • Tüm Session_Start olayları, hedef sayfa veya işleyicinin ne olursa olsun, oturum kimliğine karşılık gelen STA iş parçacığı üzerinde çalıştırın.
  • Tüm Session_End olaylara karşılık gelen STA iş parçacığı üzerinde oturum KIMLIğI için çalıştırın.
  • AspCompat için trueAspCompatfalse için kesin olarak ayarlanmış olan sayfa dışında tüm sayfaları için ayarlanmış olur.
NotApartmentThreadingfalse olarak ayarlanırsa ve AspCompat, doğru hedef sayfa için ayarlanırsa bu düzeltmeyi uyguladıktan sonra Session_Start olay STA iş parçacığı üzerinde çalıştırabilirsiniz.

Bu düzeltmeyi doğrudan oturum durumuna depolanan STA nesneler için geçerlidir. Bu düzeltme, oturum durumuna depolanan ve bir <a0>STA</a0> nesnesine bir başvuru olan bir .NET nesnesi gibi bir düzey derin bir STA nesneyi içiçe için de kullanılabilir. Ancak, bu düzeltme, birden çok düzeyi derin olan nesneler STA saklanan işe yaramaz.

Önemli Bu düzeltme paketleri iki tür içeriyor: (OCM) bir <a0>isteğe bağlı bileşen Yöneticisi paketi ve Microsoft Windows ınstaller paketi. Microsoft Windows Server 2003 kullanıyorsanız, Windows Server 2003 Dosya Koruması, .NET Framework 1. 1 dosyaları izler, çünkü, Windows Server 2003'ni (OCM) güncelleştirmenin gerekli olduğunu belirtmeniz gerekir. Windows Server 2003'ten başka bir işletim sistemi kullanıyorsanız, Windows Yükleyici paketi'ı kullanmayı sürdürmek zorundaysanız.

Bu düzeltmenin OCM sürümü aşağıdaki dillerde kullanılabilir:
  • <a1>Ingilizce</a1> (ENU)
  • Japonca (JPN)
  • <a1>Almanca</a1> (DEU)
  • <a1>Fransızca</a1> (FRN)
Desteklenen bir düzeltme Microsoft'tan edinilebilir, ancak yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Düzeltmeyi yalnızca bu sorunla karşılaşan sistemlere uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, bu düzeltmeyi içeren bir sonraki Microsoft .NET Framework 1.1 hizmet paketini beklemenizi öneririz.

Bu sorunu hemen çözmek için, düzeltmeyi edinmek üzere Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.

Bu düzeltmenin ingilizce sürümü dosya öznitelikleri (veya daha yenisi) aşağıdaki tabloda listelenir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   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

Durum

Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Daha fazla bilgi

Bu düzeltme paketini de ikincil bir düzeltme içerir. AspCompattrue olarak ayarlayın ve Null oturum durumu depolanan STA nesne ayarlarsanız, sayfayı yeniden açtığınızda bir "NullReferenceException" hata iletisi alabilirsiniz. Ikincil sorunu yeniden oluşturmak için <a0></a0>, içinde bir Page_Load olayı. aşağıdaki kodu yapıştırın
	Session["obj"] = new Object();

	Session["obj"] = null;
kodunu, bu sayfayı ilk kez ziyaret ettiğinizde, düzgün biçimde çalışıyor. Bununla birlikte, sayfayı yeniden yükleyin, Microsoft ASP.NET bir "NullReferenceException" hata iletisi alıyorsunuz ve yeniden geçerli oturumda sayfayı görüntüleyemez.

Izleme yığın:
[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
AspCompatfalse olarak ayarlarsanız bu davranış oluşmaz.

Davranışı Yeniden Oluşturma Adımları

Bu makalenin "Belirtiler" bölümünde görüntülenen sorunu yeniden oluşturmak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Microsoft Visual Basic .NET, Visual Basic ActiveX DLL DOSYASı olan bir nesne oluşturmak için kullanın.

    NotKatılımsız yürütme (NOKTASı) bileşeni'ni işaretlerseniz, hata oluşmaya devam eder.
  2. Iki işlev DLL sınıfında oluşturun:
    1. Bir dize döndüren bir işlev oluşturun.
    2. Uzun bir parametre bir işlev oluşturun ve, bir LONG değer döndürür. Bu işlev, işleve geçirilen bir sayı, 1-sayıları toplar bir döngü gerçekleştirir.
  3. Iki (Page1.aspx ve Page2.aspx) .aspx sayfaları yeni bir Web uygulaması projesi oluşturun.
  4. 1. Adımda oluşturduğunuz nesnesinin bir örneğini oluşturmak için CreateObjectSession_Start olay Global.asax dosyasında'ı kullanın.
  5. Page1.aspx Page_Load olayı biri oturum durumuna depolanan nesnesinden 2. adımda oluşturduğunuz fonksiyonları çağırın.
  6. Köprü Page2.aspx Page1.aspx içinde oluşturun.
  7. Page2.aspx Page_Load olayı Session.Abandon yöntemini çağırın.
  8. Application Center Test (ACT), Page1.aspx görüntüleme ve sonra da Page2.aspx görüntüleme işlemi kaydeden bir sınama oluşturmak için kullanın.
  9. Sınama on kullanıcılarla çalıştırın. <a1>Hata</a1> 0x8004e005 Olay Görüntüleyicisi görüntülenip görüntülenmediğine bakın.

    Not Sorunu yeniden oluşturmak için kullanıcı sayısını artırmak olabilir.

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
243543BILGI: Oturum veya uygulama Not deposu STA nesneleri yap.
243815SORUN: Kilit tek iş parçacığı aşağı oturumuna STA COM bileşeni, oturum depolama
817005Düzeltme: İş parçacığı ASPCompat modu için oturum durumunu bağlama sırasında ciddi performans sorunları

Özellikler

Makale numarası: 827164 - Last Review: 26 Şubat 2014 Çarşamba - Gözden geçirme: 1.7
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kberrmsg kbnetframe100presp3fix kbfix kbqfe kbcode kbbug KB827164 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:827164

Geri Bildirim Ver

 

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