Makale numarası: 816637 - Son Gözden Geçirme: 16 Mayıs 2007 Çarşamba - Gözden geçirme: 2.4

NASıL YAPıLıR: CookieContainer Visual C# .NET kullandığınızda Web Hizmetleri'nde bir durumu korumak için kullanılır.

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

Özet

Bu adım adım makalede, bir uygulamanın Web hizmeti için oturum veya tanımlama bilgilerini kullandığınızda System.Net.CookieContainer sınıfı kullanmayı açıklamaktadır.

Web Hizmetleri devralınarak durum bilgisi olmayan olsa da, oturum nesneler, bir istemci uygulamasının bir sunucu uygulaması arasındaki durum bilgisi olan bir iletişim sağlamak için kullanabilir. Web istemcisi Web hizmetinin arasındaki durum bilgisi olan iletişimi etkinleştirmek için <a0></a0>, Web hizmetine istemci uygulamasından gönderilen her iletinin CookieContainer nesnesini kullanabilirsiniz. Durumu etkinleştirilmiş bir istemci uygulamasında, durum bilgisi olan bir Web hizmeti tüketebilir.



Bir Web hizmeti uygulaması oluşturma

  1. Microsoft Visual Studio. NET'i çalıştırın. Yeni bir ASP.NET Web hizmeti projesi, Visual C#. NET'i kullanarak.

    Varsayılan olarak, Service1.asmx oluşturulur.
  2. Projeyi WebService1.
  3. Yapı) menüsünde tıklatın Build Solution.


Sunucuda oturum desteğini etkinleştir

Varsayılan olarak, her bir Web hizmeti yöntemi ASP.NET oturum desteğini kapatıldı. Açık bir oturum durumu gerektiren her Web hizmeti yöntemi için oturum desteğini de etkinleştirmeniz gerekir. Oturum desteğini etkinleştirmek için <a0></a0>, WebMethod özniteliğe EnableSession özelliği ekleyin. Bunu yapmak için şu adımları izleyin:
  1. Solution Explorer'da (Çözüm Gezgini), Service1.asmx sağ tıklatın ve sonra da varolan kodu aşağıdaki kodla değiştirin: <a1>
    using System;
    using System.ComponentModel;
    using System.Web;
    using System.Web.Services;
    
    namespace WebService1
    {
    	/// <summary>
    	/// Summary description for Service1.
    	/// </summary>
    	public class Service1 : System.Web.Services.WebService
    	{
    		public Service1()
    		{
    			//CODEGEN:  Call required by ASP.NET Web Services Designer.
    			InitializeComponent();
    		}
    
    		#region Component Designer generated code
    	
    		private void InitializeComponent()
    		{
    		}
    
    		
    		#endregion
    
          [WebMethod(EnableSession=true)]
          public string SetTime(string CurrentTime)
          {
             Session.Add("Time", CurrentTime);
             return ((string) Session["Time"] );			
          }	
    
          [WebMethod(EnableSession=true)]
          public string GetTime()
          {
             return ((string) Session["Time"] );
    			
          }	
    }
    }
    
    [WebMethod(EnableSession=true)] özniteliği oturum desteğini etkinleştirmek iki Web yöntemleri eklendiğini görebilirsiniz.
  2. Yapı) menüsünde tıklatın Build Solution.


Bir ASP.NET istemci uygulamasını oluşturma

Web hizmeti yöntemi, bir oturum durumu kullandığında, tanımlama bilgisi istemciye Web hizmeti yanıt üstbilgisinde geçirilir. Bu tanımlama bilgisi, oturum, Web hizmeti istemcisi için benzersiz olarak tanımlar. Web hizmeti istemci için bu tanımlama bilgisi almak için <a0></a0>, yeni bir örneğini CookieContainer olmalı oluşturulan ve Web hizmeti yöntemi çağrılmadan önce sonra CookieContainer özelliğine atanan. Tanımlama bilgisi, izleyen isteklerde doğru bulunduğunu kesinleştirir. Bu oturum tarafından gelecekteki alma için oturum durumunu alınan tanımlama bilgileri saklamanız gerekir çünkü bunu yapmanız gerekir. Bunu yapmak için şu adımları izleyin:
  1. Visual C# kullanarak yeni bir ASP.NET Web uygulaması oluşturmak .NET. CookieContainerApp projenin adı.

    Varsayılan olarak, WebForm1.aspx oluşturulur.
  2. Tasarım görünümünde WebForm1 ' ı sağ tıklatın ve sonra da HTML Kaynağı Göster'i tıklatın.
  3. Replace the existing code with the following code:
    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="CookieContainerApp.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
       <HEAD>
          <title>WebForm1</title>
          <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
          <meta name="CODE_LANGUAGE" Content="C#">
          <meta name="vs_defaultClientScript" content="JavaScript">
          <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
       </HEAD>
       <body MS_POSITIONING="GridLayout">
          <form id="Form1" method="post" runat="server">
             <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 270px; POSITION: absolute; TOP: 143px" runat="server" Text="SetTimeInSession" Width="187px"></asp:Button>
             <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 269px; POSITION: absolute; TOP: 203px" runat="server" Text="GetTimeFromSession"></asp:Button>
             <asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 565px; POSITION: absolute; TOP: 150px" runat="server"></asp:Label>
             <asp:Label id="Label2" style="Z-INDEX: 104; LEFT: 565px; POSITION: absolute; TOP: 211px" runat="server"></asp:Label>
          </form>
       </body>
    </HTML>
    
  4. Solution Explorer'da (Çözüm Gezgini), Başvurular ' ı sağ tıklatın ve sonra Add Web Reference</a1>'ı tıklatın.
  5. Adres metin kutusuna aşağıdaki URL'YI WebService1 için yazın:

    http://localhost/WebService1/Service1.asmx
  6. Git ' i tıklatın ve ardından Add Reference.
  7. Solution Explorer'da (Çözüm Gezgini), WebForm1.aspx dosyasını sağ tıklatın ve Kod Görüntüle</a1>'ı tıklatın.
  8. WebForm1 varolan kodu aşağıdaki kodla değiştirin:
    using System;
    using System.Web.UI.WebControls;
    
    namespace CookieContainerApp
    {
    	/// <summary>
    	/// Summary description for WebForm1.
    	/// </summary>
    	public class WebForm1 : System.Web.UI.Page
    	{
          protected System.Web.UI.WebControls.Button Button1;
          protected System.Web.UI.WebControls.Button Button2;
          protected System.Web.UI.WebControls.Label Label1;
          protected System.Web.UI.WebControls.Label Label2;
    
          // Create a new instance of a proxy class for your Web service.  
       	private localhost.Service1 objWSFunc = new localhost.Service1();
    
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    			// Put user code to initialize the page here.
    		}
    
    		#region Web Form Designer generated code
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN:  Call required by ASP.NET Web Form Designer.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
    		
    		/// <summary>
    		/// Required method for Designer support. Do not modify.
    		/// The contents of this method with the code editor.
    		/// </summary>
    		private void InitializeComponent()
    		{    
             this.Button1.Click += new System.EventHandler(this.Button1_Click);
             this.Button2.Click += new System.EventHandler(this.Button2_Click);
             this.Load += new System.EventHandler(this.Page_Load);
    
          }
    		#endregion
    
          private void Button1_Click(object sender, System.EventArgs e)
          {
             System.Net.CookieContainer cookieJar = new System.Net.CookieContainer();
             
             // Assign the CookieContainer to the proxy class.  
             objWSFunc.CookieContainer = cookieJar;
    
             // Get CurrentTime.
             DateTime dt = DateTime.Now;
             string CurrentTime = dt.ToString("s"); 
             
             // Invoke a Web service method that uses session state and therefore cookies.  
             objWSFunc.SetTime(CurrentTime);
    
             // Store the cookies received in the session state for future retrieval by this session.  
             Session.Add("Time", cookieJar);
    
             Label1.Text="Time set in Session : " +CurrentTime ;
             Label2.Visible=false;
    
    
          }
    
          private void Button2_Click(object sender, System.EventArgs e)
          {
             // Get the SessionObject.
             objWSFunc.CookieContainer = (System.Net.CookieContainer) Session["Time"];          
    
             Label2.Visible=true;
             // Call the WebService method to access the session state.
             Label2.Text = "Time Get from Session : "+ objWSFunc.GetTime();
            
          }
           }
    }
    
  9. Yapı) menüsünde tıklatın Build Solution.


Içerik CookieContainer kullanarak bir Session nesnesi ekleyin...

  1. Hata Ayıkla menüsünde Başlat oluşturmak ve bu uygulamayı çalıştırmak için tıklatın.
  2. SetTimeInSession Ek Yardım düğmesini tıklatın.

    Geçerli zaman değeri oturum nesnesinde depolanır ve geçerli saati görüntülenir.

    ' De olay düğmesini, CookieContainer nesnesi oluşturulur ve sonra Web hizmeti proxy'si CookieContainer özelliği atanır. Daha sonra oturum nesnesi güncelleştirmek için Web hizmeti yöntemi SetTime() çağrılır.


Session nesnesinden CookieContainer kullanarak içerik Al

GetTimeFromSession Ek Yardım düğmesini tıklatın. Web'i ça??rd???n?zda, nesnenin görüntülenme oturumda saklanan değer hizmet yöntemi GetTime() zaman fark.


Referanslar

CookieContainer sınıfı ve ASP.NET oturum durumu bir Web hizmeti kullanma hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitelerini ziyaret edin:

http://msdn2.microsoft.com/en-us/library/system.net.cookiecontainer(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.net.cookiecontainer(vs.71).aspx)

http://msdn2.microsoft.com/en-us/library/aa480509.aspx (http://msdn2.microsoft.com/en-us/library/aa480509.aspx)



Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Web Services (included with the .NET Framework) 1.0
  • Microsoft Web Services Enhancements for Microsoft .NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbmt kbstate kbcookie kbwebservices kbwebserver kbwebforms kbhowtomaster KB816637 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:816637  (http://support.microsoft.com/kb/816637/en-us/ )