FIX: Metode Server.Transfer penyebab stack overflow dan menyebabkan ASP.NET pekerja proses berhenti merespons

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 839521 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

GEJALA

Catatan Microsoft Visual C++.NET 2002 dan Microsoft Visual C++.NET 2003 mendukung kedua kode dikelola model yang disediakan oleh Microsoft.NET Framework dan unmanaged asli Microsoft Windows kode model. Informasi di dalam artikel ini hanya berlaku untuk kode Visual C++ unmanaged.Ketika Anda menjalankan aplikasi berbasis Web yang didasarkan pada Microsoft.NET Framework 1.1, Anda menerima pesan galat ketika kondisi berikut ini benar:
  • Panggilan aplikasi berbasis Web Anda Server.transfer metode untuk mentransfer ke halaman yang sama.
  • Anda mengirim permintaan POST melalui Server.transfer metode.
  • Anda telah menerapkan perbaikan terbaru yang dijelaskan di dalam artikel Pangkalan Pengetahuan Microsoft 837132 atau versi perbaikan terbaru.
Berikut adalah pesan galat yang Anda terima:
Unhandled pengecualian tipe 'System.StackOverflowException' yang terjadi di mscorlib.dll
Setelah Anda menerima pesan galat, ASP.NET pekerja proses berhenti merespons.

PENYEBAB

Masalah ini terjadi karena Server.Transfer (sasaya halaman) metode loop kembali ke halaman yang sama sampai semua ruang stack habis. Metode Server.Transfer loop kembali ke sama halaman karena string kueri yang diawetkan antara setiap permintaan POST.

PEMECAHAN MASALAH

Masalah yang terdaftar di bagian "Gejala" saat memanggil metode Server.Transfer (halaman sama) dengan parameter tambahan tidak dialamatkan dengan menginstal paket layanan.

Catatan Bila Anda membuat panggilan Server.Transfer (halaman sama, benar) tanpa kode tambahan seperti itu tercantum di bawah ini, stack overflow terjadi. Perilaku ini adalah dengan desain dan akan terjadi di.NET Framework 1.1 bahkan setelah menginstal perbaikan terbaru ini, dan akan juga terjadi di.NET Framework 2.0 dan lebih tinggi. Bila Anda membutuhkan bentuk dan permintaan data, lihat Daftar Tabel di"Informasi selengkapnya" bagian dari artikel ini untuk petunjuk tentang bagaimana menangani situasi ini. Untuk menghindari kesalahan ini, tambahkan kode yang mirip dengan berikut:

Visual C#.NET
if (IsPostBack) 
{ 
       if (Context.Items["Transferred"] == null) 
      { 
	// Initialize to prevent stackover
	Context.Items["Transferred"] = new object(); 
	// TransferToSelf
	Server.Transfer("Webform1.aspx", true);
      } 
} 
Visual Basic.NET
<title>Webform1</title> 
If IsPostBack() Then   
     If Context.Items("Transferred") is Nothing 
           'Initialize to prevent stackover 
           Context.Items("Transferred") = new object() 
          'TransferToSelf 
          Server.Transfer("WebForm1.aspx", true)   
     End If 
End If

Informasi perbaikan terbaru

Perbaikan terbaru yang didukung saat ini tersedia dari Microsoft, namun ini bertujuan hanya untuk memperbaiki masalah yang dijelaskan di artikel ini. Hanya berlaku untuk sistem yang mengalami masalah khusus ini. Perbaikan terbaru ini akan menerima pengujian tambahan. Oleh karena itu, jika Anda sama sekali tidak dipengaruhi oleh masalah ini, kami menganjurkan Anda menunggu berikutnya Microsoft.NET Framework 1.1 paket layanan yang berisi perbaikan terbaru ini.

Untuk segera memecahkan masalah ini, hubungi Layanan Dukungan Produk Microsoft untuk memperoleh perbaikan terbaru. Untuk daftar lengkap nomor telepon Layanan Dukungan Produk Microsoft dan informasi mengenai biaya dukungan, kunjungi Web site Microsoft berikut:
http://support.Microsoft.com/contactus/?ws=support
Catatan Dalam kasus tertentu, biaya yang biasanya diadakan untuk panggilan dukungan mungkin dibatalkan apabila teknisi dukungan Microsoft menentukan bahwa pembaruan khusus akan memecahkan masalah Anda. Biaya dukungan biasa akan berhubungan dengan pertanyaan dan masalah yang tidak termasuk pada pembaruan tertentu yang dimaksud dukungan tambahan.

Prasyarat

Tidak ada diperlukan prasyarat.

Kebutuhan restart

Anda tidak harus me-restart komputer setelah Anda menerapkan pembaruan peranti penangkap lunak ini.

Informasi penggantian perbaikan terbaru

Perbaikan terbaru ini tidak menggantikan perbaikan terbaru lainnya.

Informasi file

Versi bahasa Perserikatan Kerajaan dari perbaikan terbaru ini memiliki atribut berkas (atau atribut berkas yang lebih baru) yang didaftar di dalam Daftar Tabel berikut. Tanggal dan waktu untuk berkas-berkas ini tercantum dalam Coordinated Universal Time (UTC). Ketika Anda melihat informasi berkas, waktunya akan diubah ke waktu lokal. Untuk menemukan perbedaan waktu UTC dan waktu lokal, gunakan zona waktu tab pada alat tanggal dan waktu dalam Panel Kontrol.
Date         Time   Version            Size    File name
--------------------------------------------------------------
31-Mar-2004  22:45  1.1.4322.1017     258,048  Aspnet_isapi.dll  
31-Mar-2004  22:45  1.1.4322.1017      20,480  Aspnet_regiis.exe  
31-Mar-2004  22:45  1.1.4322.1017      32,768  Aspnet_state.exe  
31-Mar-2004  22:45  1.1.4322.1017      32,768  Aspnet_wp.exe    
27-May-2003  19:00                     33,522  Installpersistsqlstate.sql
27-May-2003  19:00                     34,150  Installsqlstate.sql
30-Mar-2004  23:41                     35,017  Installsqlstatetemplate.sql
18-Jan-2004  08:55  1.0.3705.0        106,496  Netfxupdate.exe  
31-Mar-2004  22:45  1.1.4322.1017      94,208  Perfcounter.dll  
18-Jan-2004  08:55  1.1.4322.573      102,400  Setregni.exe     
02-Feb-2004  16:43                      8,571  Smartnav.js
31-Mar-2004  22:44  1.1.4322.1017   1,220,608  Sy52106.dll      
31-Mar-2004  22:44  1.1.4322.1017     241,664  System.messaging.dll  
31-Mar-2004  22:44  1.1.4322.1017     323,584  System.runtime.remoting.dll  
31-Mar-2004  22:44  1.1.4322.1017     131,072  System.runtime.serialization.formatters.soap.dll  
31-Mar-2004  22:44  1.1.4322.1017   1,257,472  System.web.dll   
31-Mar-2004  22:44  1.1.4322.1017     819,200  System.web.mobile.dll  
31-Mar-2004  22:45  1.1.4322.1017     569,344  System.web.services.dll  
31-Mar-2004  22:45  1.1.4322.1017   1,339,392  System.xml.dll   
18-Jan-2004  08:55  1.1.4322.573      118,784  Togac.exe        
30-Mar-2004  23:41                      2,119  Uninstallsqlstatetemplate.sql
02-Feb-2004  16:43                     14,482  Webuivalidation.js
17-Mar-2004  09:10                        271  Branches.inf
31-Mar-2004  23:18                     17,125  Kb839521.cat
31-Mar-2004  23:07                        354  Updatebr.inf
31-Mar-2004  23:08                     11,734  Update_rtmqfe.inf

STATUS

Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana didaftar di dalam bagian "Applies to".

INFORMASI LEBIH LANJUT

Perbaikan terbaru ini memperkenalkan beberapa perilaku baru dalam metode Server.Transfer . Daftar Tabel berikut menjelaskan tentang hasil yang terjadi bila Anda mengirim permintaan POST melalui metode Server.Transfer dengan menggunakan parameter yang berbeda.
Perkecil tabel iniPerbesar tabel ini
Server.transfer panggilanHasil
Server.transfer (halaman berbeda, palsu)Data string kueri menjatuhkan, dan bentuk pengumpulan data dijatuhkan.
Server.transfer (berbeda halaman) Data string kueri menjatuhkan, dan bentuk pengumpulan data yang diawetkan.
Server.transfer (halaman berbeda, benar)Data string kueri yang diawetkan, dan bentuk pengumpulan data yang diawetkan.
Server.transfer (halaman sama, palsu) Data string kueri menjatuhkan, dan bentuk pengumpulan data dijatuhkan.
Server.transfer (sama halaman)Data string kueri menjatuhkan, dan bentuk pengumpulan data yang diawetkan.
Server.transfer (halaman sama, benar)Data string kueri yang diawetkan, dan bentuk pengumpulan data yang diawetkan.

Langkah-langkah untuk mereproduksi masalah

  1. Menginstal perbaikan terbaru yang dijelaskan di artikel Pangkalan Pengetahuan Microsoft 837132, atau versi perbaikan terbaru.
  2. Di Microsoft Visual Studio.NET, membuat baru Visual Basic ASP.NET aplikasi web proyek.
  3. Klik tombol tekan dalam Toolbox, dan kemudian menarik sebuah tombol tekan pada halaman WebForm1.aspx. Nama tombol tekan baru Button1.
  4. klik ganda Button1, kemudian tambahkan kode berikut untuk Button1_Click Event:
    If IsPostBack() Then
        Server.Transfer("WebForm1.aspx")
    End If
    
  5. Menjalankan solusi, dan kemudian klik Button1.
Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
824684Keterangan tentang terminologi standar yang digunakan untuk menjelaskan pembaruan peranti penangkap lunak Microsoft
Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
837132FIX: WebService objek mengantri dan utilisasi CPU dapat meningkatkan tiba-tiba di.NET Framework 1.1

Properti

ID Artikel: 839521 - Kajian Terakhir: 16 April 2012 - Revisi: 1.0
Berlaku bagi:
  • Microsoft .NET Framework 1.1 Service Pack 1
Kata kunci: 
kbqfe kbhotfixserver kbbug kbfix kbnetframe110presp1fix kbmt KB839521 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:839521

Berikan Masukan

 

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