Makale numarası: 936993 - Son Gözden Geçirme: 01 Haziran 2007 Cuma - Gözden geçirme: 1.2

Bir AJAX 1.0 kullanan ASP.NET 2.0 programını çalıştıran bir Web sayfasına eriştiğinizde hata iletisi: "BIR çalışma zamanı hatası oluştu"

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Bir AJAX etkin 1.0 Microsoft ASP.NET 2.0 programını çalıştıran bir Web sayfasına eriştiğinizde aşağıdaki hata iletisini alırsınız:
Bir Çalışma Zamanı hatası oluştu.
Hatayı ayıklamak istiyor musunuz?
Satır: 5
Hata: Erişim engellendi
Bu hata iletisi, aşağıdaki koşullar geçerli olursa oluşur:
  • Farklı bir etki alanından başka bir Web sayfasına gösteren Web sayfasındaki <iframe>öğe kullanın.
  • Web sayfası farklı bir etki alanından, ASP.NET AJAX sunucu denetimleri kullanır.
  • Zaman uyumsuz işlemi postback tetikleyen <iframe>öğesinde'da bir eylem gerçekleştirme.
  • Microsoft ınternet Explorer'da Internet seçenekleri ' nde aşağıdaki onay kutularından Tarama ' nın altında <a0>Gelişmiş</a0> sekmesindeki seçmek için tıklatın:
    • Kod hata ayıklamasını (ınternet Explorer) devre dışı bırakma
    • Kod (diğer) hata ayıklamasını devre dışı bırakma

Neden

Bu sorun, <iframe>öğe ve <iframe>öğe noktaları farklı etki alanlarında olan Web sayfasını içeren Web sayfasını nedeniyle oluşur. Mahsup hesabı'içeriği belirlemek çalıştığında AJAX 1.0 kullanan ASP.NET komut dosyası başarısız olur.

Çözüm

Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın.

Yöntem 1

Web sayfası, <iframe>öğe ve <iframe>öğe noktaları aynı etki alanında olduğu Web sayfasının içerdiğinden emin olun.

Yöntem 2

Hata iletisiyle karşılaşmamak için JavaScript dosyalarına güncelleştirin. AJAX uzantısı paketin kaynak tabanlı dosyaları, yerine AJAX kitaplığı paketinde bulunan dış komut dosyalarını kullanın. Bunu yapmak için şu adımları izleyin.

1. Adım: Web sayfası yerine kaynak tabanlı dosyalar komut dosyalarını kullanmak için yapılandırma

  1. Karşıdan yükleyip daha sonra AJAX kitaplığı, Microsoft Yükleme Merkezi'nden ayıklayın.

    Aşağıdaki dosya Microsoft Yükleme Merkezi'nden yüklenebilir:

    Bu resmi kapatBu resmi aç
    Download
    Download the Microsoft AJAX Library package now. (http://ajax.asp.net/downloads/library/default.aspx?tabid=47&subtabid=471)

    Microsoft Destek dosyalarını karşıdan yükleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    119591  (http://support.microsoft.com/kb/119591/ ) Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
    Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır.
  2. <iframe>Öğesi içeren Web sayfası bir değer belirtmek<scriptmanager>Öğesinde KomutDosyasıYolu özniteliği. Aşağıdaki kod, komut dosyalarını, uygulamanın kök dizinine KomutDosyaları adlı bir klasörde arar.
    <asp:ScriptManager ID="ScriptManager1" runat="server" ScriptPath="~/Scripts" />
  3. System.Web.Extensions klasörü AJAX kitaplıkta komut dosyaları klasörüne kopyalayın.
  4. Komut dosyalarını komut dosyaları klasöründen adlandırılır onaylamak için ASPX sayfa erişin. Bunu yapmak için <a0></a0>, ınternet Explorer'da <a1>Görünüm</a1> menüsünde kaynak ' ı tıklatın. Aşağıdaki iki komut dosyası etiketlerinin bulun.
    <script src="Scripts/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js" type="text/javascript"></script>
    <script src="Scripts/System.Web.Extensions/1.0.61025.0/MicrosoftAjaxWebForms.js" type="text/javascript"></script>
    

Adım 2: hata iletisiyle karşılaşmamak için MicrosoftAjax.debug.js dosyasını değiştirir

Web.config dosyasında <compilation>öğesindeki <a2>debug</a2> özniteliği true olarak ayarlandığında, MicrosoftAjax.debug.js dosyasını kullanmanız gerekir. MicrosoftAjax.debug.js dosya, satır sonları içeriyor. MicrosoftAjax.debug.js dosyasını değiştirmek için <a0></a0>, aşağıdaki adımları izleyin:
  1. MicrosoftAjax.debug.js dosyasını açın. Bu dosya aşağıdaki klasörde bulunmaktadır:
    Application Root Directory/Scripts/System.Web.Extensions/1.0.61025.0
  2. Kod aşağıdaki iki satırı bulun. (Olabilir kodu bu iki satır.)
    switch(Sys.Browser.agent) {
        case Sys.Browser.InternetExplorer:
    

    case Sys.Browser.Safari:
    
  3. Adım 2b ' listelenen iki kod satırlarını arasında aşağıdaki kodu yapıştırın. Kod iki satır varsa, kodunu değiştirin.

    Yeni kodu1)
     Sys.UI.DomElement.getLocation = function(element) {
                if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);
    
                var clientRect = element.getBoundingClientRect();
                if (!clientRect) {
                    return new Sys.UI.Point(0,0);
                }
    
                var ownerDocument = element.document.documentElement;
    
                var offsetX = clientRect.left - 2 + ownerDocument.scrollLeft,
                    offsetY = clientRect.top - 2 + ownerDocument.scrollTop;
                
                try {
                    var f = element.ownerDocument.parentWindow.frameElement || null;
                    if (f) {
                        var offset = 2 - (f.frameBorder || 1) * 2;
                        offsetX += offset;
                        offsetY += offset;
                    }
                }
                catch(ex) {
                }    
                
                return new Sys.UI.Point(offsetX, offsetY);
            }
            break;
    
  4. MicrosoftAjax.debug.js dosyayı kaydedin.
  5. Web.config dosyasında ASP.NET programında açın ve hata ayıklama özniteliği true <compilation>öğesinde ayarlayın.
  6. Web sayfası olarak kaydedin.

3. Adım: hata iletisiyle karşılaşmamak için MicrosoftAjax.js dosyasını değiştirir

MicrosoftAjax.debug.js dosya sürümü MicrosoftAjax.js dosyasıdır. Satır sonları, MicrosoftAjax.js içermiyor. MicrosoftAjax.js dosyasını değiştirmek için <a0></a0>, aşağıdaki adımları izleyin:
  1. Komut dosyaları klasöründe MicrosoftAjax.js dosyasını.
  2. Kod aşağıdaki iki satırı bulun. (Olabilir kodu bu iki satır.)
    switch(Sys.Browser.agent){case Sys.Browser.InternetExplorer:
    

    case Sys.Browser.Safari:
  3. Adım 3b'de listelenen iki kod satırlarını arasında aşağıdaki kodu yapıştırın. Kod iki satır varsa, kodunu değiştirin.

    Yeni kodu
    Sys.UI.DomElement.getLocation=function(a){if(a.self||a.nodeType===9) return new Sys.UI.Point(0,0);
    var b=a.getBoundingClientRect();
    if(!b) return new Sys.UI.Point(0,0);
    var c=a.document.documentElement,d=b.left-2+c.scrollLeft,e=b.top-2+c.scrollTop;
    try{var g=a.ownerDocument.parentWindow.frameElement||null;
    if(g){var f=2-(g.frameBorder||1)*2;
    d+=f;e+=f}}catch(h){}return new Sys.UI.Point(d,e)};
    break;
  4. MicrosoftAjax.js dosyayı kaydedin.
  5. Web.config dosyasında ASP.NET programında açın ve hata ayıklama özniteliği true <compilation>öğesinde ayarlayın.
  6. Web sayfası olarak kaydedin.

Durum

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

Daha fazla bilgi

<iframe>Öğesi hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms535258.aspx (http://msdn2.microsoft.com/en-us/library/ms535258.aspx)
ASP.NET AJAX hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://ajax.asp.net/about/default.aspx?tabid=47 (http://ajax.asp.net/about/default.aspx?tabid=47)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 2.0
Anahtar Kelimeler: 
kbmt kberrmsg kbwebbrowser kbfix kbasp kbtshoot kbprb KB936993 KbMttr
Otomatik TercümeOtomatik Tercüme
Ö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:936993  (http://support.microsoft.com/kb/936993/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.