SORUN: "görünüm durumu geçersiz" Server.Transfer kullandığınızda hata iletisi

Makale çevirileri Makale çevirileri
Makale numarası: 316920 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

<a1>HttpServerUtility.Transfer</a1> ("page name", true) kullandığınızda, aşağıdaki hata iletisini alırsınız:
Görünüm durumu bu sayfa için geçersiz, bozulmuş olabilir

Neden

Bu sorun nedeniyle oluşur. <pages>EnableViewStateMac öznitelik öğesi doğru olarak varsayılan olarak ayarlanır. Bu özniteliği true olarak ayarlandığında, ASP.NET sayfayı yeniden istemciden deftere nakledildiğinde bir iletinin kimlik doğrulama denetimi (MAC) sayfanın Görünüm durumunun çalışır. Bu denetim, sayfanın Görünüm durumunun istemci üzerinde değiştirildiği belirler. Güvenlik nedeniyle, bu öznitelik, true olarak ayarlandığında tutarsınız önerilir.

Server.Transfer yöntemini ve ikinci parametre true olarak ayarlandığında, SorguDizesi ve form koleksiyonu korur. Form alanlarını, sayfanın Görünüm durumunun tutan gizli __VIEWSTATE form alanı biridir. Görünüm durumu ileti kimlik doğrulaması başarısız olur çünkü ileti kimlik denetimi yalnızca her sayfanın denetleyin. Bu nedenle, Server.Transfer çağıran sayfasından görünüm durumu, hedef sayfa üzerinde geçerli değil.

Görünüm durumu, sayfa kapsamlı ve yalnızca bu sayfa için geçerlidir. Görünüm durumunun sayfalar arasında aktarılmalıdır değil.

Çözüm

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

<a1>Çözünürlüğü</a1> 1

Sunucu diğer sayfalara denetim değerleri geçirmek için sayfalar arasında değerleri aktarılır. Daha fazla bilgi için aşağıdaki MSDN için başvuru belgeleri:
Sayfalar arasında geçirilmesi Server denetim değerleri
http://msdn2.microsoft.com/en-us/library/6c3yckfw(vs.71).aspx
Bu hedef sayfasından istediğiniz denetimin her özellik için genel özellikleri oluşturmanız gerekir.

Birçok denetim varsa ve bu denetimlerin özellikleri başka bir sayfadan erişmek istiyorsanız, bu denetimlerin ortak değişkenler olarak da bildirebilirsiniz. Örneğin,:

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)
				

<a1>Çözünürlüğü</a1> 2

(Bu false varsayılan) ikinci parametre iletmeyen ne zaman, Server.Transfer çağrısı. Örneğin:
Server.Transfer("<page name>")
				
bu kod adlı sayfaya QueryString ve form alanlarına göndermez. ASP.NET, veri transfer edildiğinde, ileti kimlik doğrulama denetimi çalışmaz.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. Başka bir sayfaya yürütme aktarımları WebForm1.aspx adlı bir .aspx sayfası oluşturun. WebForm1.aspx için aşağıdaki kodu ekleyin:
    <%@ 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. WebForm2.aspx adlı başka bir .aspx sayfası oluşturun ve aşağıdaki kodu ekleyin:
    <%@ 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.Page
    Dim 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. WebForm1.aspx tarayıcınızda açın ve ardından Gönder ' i tıklatın.

Özellikler

Makale numarası: 316920 - Last Review: 19 Nisan 2007 Perşembe - Gözden geçirme: 3.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.0
Anahtar Kelimeler: 
kbmt kbprb kbstate kbwebforms KB316920 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:316920
Kullanı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.

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