Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

PRB: "lihat negara tidak sah" pesan galat ketika Anda menggunakan Server.Transfer

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:316920
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan “sebagaimana adanya” dan tidak akan diperbarui.
GEJALA
Ketika Anda menggunakan HttpServerUtility.Transfer ("Halaman Nama", True), Anda menerima pesan galat berikut:
Lihat negara tidak sah untuk Halaman ini dan mungkin rusak
PENYEBAB
Masalah ini terjadi karena EnableViewStateMac atribut <pages></pages> elemen diatur ke benar secara default. Ketika atribut ini diatur ke benarASP.NET menjalankan pemeriksaan otentikasi pesan (MAC) pada tampilan keadaan halaman ketika halaman dikirim kembali dari klien. Cek ini menentukan jika keadaan lihat halaman diubah pada klien. Untuk Keamanan tujuan, dianjurkan bahwa Anda menyimpan atribut ini diatur ke benar.

Kapan Anda menelpon Server.transfer metode dan menetapkan parameter kedua ke benar, Anda mempertahankan QueryString dan Bentuk Koleksi. Salah satu kolom formulir adalah __VIEWSTATE tersembunyi bentuk lapangan, yang memegang pandangan negara untuk halaman. Lihat negara pesan cek otentikasi gagal karena otentikasi pesan memeriksa hanya cek setiap halaman. Oleh karena itu, lihat negara bagian dari halaman yang panggilan Server.transfer ini tidak berlaku pada halaman tujuan.

Lihat negara Halaman scoped dan berlaku untuk halaman hanya. Lihat negara tidak boleh ditransfer di laman.
PEMECAHAN MASALAH
Untuk menyelesaikan masalah ini, gunakan salah satu metode berikut.

Resolusi 1

Nilai-nilai transfer antara halaman untuk lulus server Anda kontrol nilai ke halaman lain. Untuk informasi lebih lanjut, lihat MSDN berikut Dokumentasi:
Nilai-nilai Server kontrol lewat antara halaman
.aspx http://msdn2.Microsoft.com/en-us/library/6c3yckfw (vs.71)
Ini memerlukan bahwa Anda membuat properti umum untuk setiap properti kontrol yang ingin Anda akses dari halaman tujuan.

Jika Anda memiliki banyak kontrol, dan jika Anda ingin mengakses properti ini kontrol dari halaman lain, Anda juga dapat mendeklarasikan mereka kontrol sebagai publik variabel. Misalnya:

Page1.aspx
Public Class Page1    Public WithEvents TextBox1 As System.Web.UI.WebControls.TextBox    'Insert your code here.End Class				
Page2.aspx
            Dim sourcePage As Page1            sourcePage = CType(Context.Handler, WebForm1)            Response.Write(sourcePage.TextBox1.Text)				

Resolusi 2

Tidak lulus parameter kedua (yang palsu secara default) ketika Anda menelepon Server.transfer. Misalnya:
Server.Transfer("<page name>")				
Kode ini mengirim QueryString dan Bentuk bidang ke halaman yang disebut. Ketika tidak ada data yang ditransfer, ASP.NET tidak berjalan cek otentikasi pesan.
INFORMASI LEBIH LANJUT

Langkah-Langkah untuk Mereproduksi Perilaku

  1. Membuat halaman .aspx yang bernama WebForm1.aspx yang transfer eksekusi ke halaman lain. Tambahkan kode berikut untuk WebForm1.aspx:
    <%@ Page language="vb" AutoEventWireup="true" %><html>    <body>	    <form id="WebForm1" method="post" runat="server">      <asp:TextBox id="txtName" runat="server">Your Name</asp:TextBox><br>      <asp:Button id="Button1" runat="server" Text="Submit" OnClick="Button1_Click"></asp:Button>    </form>	  </body></html><script runat=server>Sub Button1_Click(sender As Object, e As System.EventArgs)	Server.Transfer("WebForm2.aspx",true)End Sub</script>					
  2. Membuat halaman .aspx lain yang bernama WebForm2.aspx, dan kemudian menambahkan kode berikut:
    <%@ Page language="vb" AutoEventWireup="true" %><html>  <body>	    <form id="WebForm2" method="post" runat="server">      <asp:Label id="lblName" runat="server" >Web Form 2</asp:Label>    </form>	  </body></html><script runat=server>Sub Page_Load(sender As Object, e As EventArgs)Dim thisPage As System.Web.UI.PageDim nameTextBox As TextBox	thisPage = CType(Context.Handler, System.Web.UI.Page)	nameTextBox =  CType(thisPage.FindControl("txtName"), System.Web.UI.Control)	lblName.Text = "Your name is '" & nameTextBox.Text & "'."		End Sub</script>					
  3. Buka WebForm1.aspx di peramban, dan kemudian klik Kirim.
ViewState

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 316920 - Tinjauan Terakhir: 09/24/2011 18:42:00 - Revisi: 2.0

Microsoft ASP.NET 1.0

  • kbprb kbstate kbwebforms kbmt KB316920 KbMtid
Tanggapan
;t=">yle="display: none; " src="https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">