SORUN: Olumsuz STA bileşenleri de ASP.NET ASPCOMPAT modu kurucu oluşturma performansı üzerindeki etkisi

Makale çevirileri Makale çevirileri
Makale numarası: 308095 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Belirtiler

Bir ASP.NET sayfası ASPCOMPAT modu apartman iş parçacıklı bileşenler ça??rd???n?zda, önemli performans düşüş olduğunu fark edebilirsiniz.

Neden

ASPCOMPAT modu kullanıyorsanız (yani bir sayfa ile kullanıyorsanız < % @ ASPCOMPAT = "true" %> yönergesini), ASP.NET sayfalardaki bir STA iş parçacığı havuzu üzerinde çalışır. Ancak, inşaat zaman oluşturulan Bileşen Nesne Modeli (COM) bileşenlerini isteği tek iş parçacıklı grup (STA) iş parçacığı havuzuna zamanlanmadan önce oluşturulur ve bu nedenle çok iş parçacıklı grup (MTA) bir iş parçacığından oluşturulur. Bu senaryoda, önemli bir performans düşüşü yaşarsınız.

En önemli ölçüde (STA ana bilgisayar) aynı iş parçacığının Grup iş parçacıklı bileşenler, MTA iş parçacığı oluşturulan tüm örneklerini yürütür. Tüm kullanıcıların, kendi COM bileşeninin örneğini başvuru sahip olsa bile, tüm bu bileşenler içine aramalarının bu bir iş parçacığına sıralanmış, yani (tek bir çağrı, bir kerede çalıştırılır).

Ayrıca, her arama bileşeni için bir iş parçacığı geçiş nedeniyle sayfa olaylarını yapılır'ı tıklatın, daha küçük bir performans yoktur. Bunun nedeni, sayfa olaylar <a0>STA</a0> havuzundan bir iş parçacığında yürütülür; (COM) bileşeni bir MTA istemciden oluşturulduğundan) COM bileşeni yine STA ana bilgisayarda gerçekleştirildiğinde olmasıdır. Kimliğe bürünme özelliğini kullanırsanız, bu iş parçacığının anahtar aynı zamanda diğer hatalar için müşteri adayı. Daha fazla bilgi için, bu makalenin "Başvurular" bölümüne bakın.

Çözüm

STA bileşenlerle ASPCOMPAT modu kullanıyorsanız, yalnızca bir yöntem veya sayfa olayların (örneğin, Page_Loadpage_ınit ve benzeri) bir COM bileşenleri oluşturmak ve bu COM bileşenleri inşaat zaman oluşturun.

Örneğin, bileşen yapım zaman oluşturur aşağıdakine benzer bir üye bildirimi kaçının:

Visual Basic. NET'e
<%@ Page Language="VB" ASPCOMPAT="TRUE" %>
<script runat="server">

Dim comObj As MyComObject = New MyComObject()

Public Sub Page_Load()
   comObj.DoSomething()
End Sub
</script>
				
Visual C# .NET
<%@ Page Language="C#" ASPCOMPAT="TRUE" %>
<script runat="server">

MyComObject comObj = new MyComObject();

public void Page_Load()
{
   comObj.DoSomething()
}
</script>
				
Visual J#. NET'i
<%@ Page Language="VJ#" ASPCOMPAT="TRUE" %>
<script runat="server">

MyComObject comObj = new MyComObject();

public void Page_Load()
{
  comObj.DoSomething();
}
</script>
				
bunun yerine, aşağıdaki kodu kullanın:

Visual Basic. NET'e
<%@ Page Language="VB" ASPCOMPAT="TRUE" %>
<script runat="server">

Dim comObj As MyComObject 

Public Sub Page_Load()
   comObj = New MyComObject()
   comObj.DoSomething()
End Sub
				
Visual C# .NET
<%@ Page Language="C#" ASPCOMPAT="TRUE" %>
<script runat="server">

MyComObject comObj;

public void Page_Load()
{
   comObj = new MyComObject();
   comObj.DoSomething();
}
				
Visual J# .NET
<%@ Page Language="VJ#" ASPCOMPAT="TRUE" %>
<script runat="server">

MyComObject comObj;

public void Page_Load()
{
  comObj = new MyComObject();
  comObj.DoSomething();
}
</script>
				

Durum

Bu davranış tasarım yüzündendir.

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
325791SORUN: ASP.NET ve arama STA COM bileşenleri belirlerken bir hata iletisi oluşur erişim engellendi

Özellikler

Makale numarası: 308095 - Last Review: 24 Şubat 2014 Pazartesi - Gözden geçirme: 2.9
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft .NET Framework 1.1
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbhttpruntime kbinterop kbperformance kbprb kbreadme kbthread KB308095 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:308095

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