2010-06-25 63 views
2

我是Silverlight和WCF服務的新手。我試圖編寫一個可以操縱對象服務器端的客戶端應用程序。已啓用SilverLight Wcf服務 - 無法跟蹤會話

我的問題是,我的每一個的Silverlight客戶端向服務呼叫時,它進入到構造系統

public SilverLightEnabledWcfService() 
     { 
     } 

在下面的例子中,我只是想增加或減少一個數量取決於活動客戶端。

我該如何正確地做到這一點?

我也嘗試創建一個常規的ASP.net客戶端頁面,我得到了相同的結果,即服務器不記得會話。所以我不認爲問題出現在我的客戶端,但如果有幫助,我仍然很樂意發佈代碼。

謝謝!

using System; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 
using Count.Library; 

namespace Count.WebApp 
{ 
    [ServiceContract(Namespace = "")] 
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
    public class SilverLightEnabledWcfService 
    { 
     public SilverLightEnabledWcfService() 
     { 
     } 

     private Class1 _class1; 

     [OperationContract] 
     public int Add1() 
     { 
      if (_class1 == null) 
       _class1 = new Class1(0); 
      _class1.Add1(); 
      return Value; 
     } 

     [OperationContract] 
     public int Remove1() 
     { 
      if (_class1 == null) 
       _class1 = new Class1(0); 
      _class1.Remove1(); 
      return Value; 
     } 

     public int Value 
     { 
      get 
      { 
       return _class1.Count; 
      } 
     } 
    } 
} 
+1

你在使用結合?你的服務器和客戶端配置如何?會話只支持選擇幾個綁定 - 最值得注意的是,默認的basicHttpBinding沒有**不支持會話... – 2010-06-25 05:17:13

回答

1

會話需要wsHttpBinding,但這不受Silverlight支持。有變通辦法,但:

http://web-snippets.blogspot.com/2008_08_01_archive.html

http://forums.silverlight.net/forums/t/14130.aspx

+0

感謝您的鏈接。這些讓我懷疑我是否有正確的方法。我可能不需要使用會話,我不確定。基本上在Silverlight客戶端中,我想調用服務器上的WCF服務,該服務將保留此特定客戶端調用的以前實例化的對象。我想從客戶端調用存儲在服務器上的同一對象上的連續方法。我需要使用會話來做到這一點嗎? 謝謝! – bmanu 2010-06-27 18:52:00

+0

我不會在SilverLightEnabledWcfService類中存儲任何狀態。讓它將任何服務請求轉發給同一個應用程序域中的對象或第二個wcf服務,並嘗試使用FormsAuthentication方法爲該對象或第二個服務提供滿足該請求所需的用戶信息。 – Ozan 2010-06-27 19:43:48