Ö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.
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.
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:
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.
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) +0System.Web.Util.AspCompatApplicationStep.OnPageStartSessionObjects() +90System.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:
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.
Iki işlev DLL sınıfında oluşturun:
Bir dize döndüren bir işlev oluşturun.
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.
Iki (Page1.aspx ve Page2.aspx) .aspx sayfaları yeni bir Web uygulaması projesi oluşturun.
1. Adımda oluşturduğunuz nesnesinin bir örneğini oluşturmak için CreateObjectSession_Start olay Global.asax dosyasında'ı kullanın.
Page1.aspx Page_Load olayı biri oturum durumuna depolanan nesnesinden 2. adımda oluşturduğunuz fonksiyonları çağırın.
Köprü Page2.aspx Page1.aspx içinde oluşturun.
Page2.aspx Page_Load olayı Session.Abandon yöntemini çağırın.
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.
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ı
Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır