通过WCF将会话值传递给silverlight?

时间:2014-01-03 17:46:00

标签: c# asp.net silverlight xaml session

我在asp.net页面上有一个分配给它的值的会话,现在我需要从silverlight xaml.cs页面访问该会话值,如何做到这一点,silverlight和web应用程序都在同一个解决方案中?< / p>

2 个答案:

答案 0 :(得分:0)

在web.config中添加以下设置并从HttpContext

访问会话
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />    
</system.serviceModel>

<强>更新 在WCF服务中设置会话变量,如下所示

  HttpContext.Current.Session["Test"] = value;

并在silverlight中访问此变量,如下所示

var value=HttpContext.Current.Session["Test"];

答案 1 :(得分:0)

我想要做的是,在xaml.cs页面中我想查询数据,条件是要查询的数据应该是存储在会话中的用户ID的数据,但后来我做的是,在我创建的WCF文件中,我执行了以下操作,

在beggining我检查了web.config文件是否有aspNetCompatibilityEnabled =&#34; true&#34;

<system.serviceModel>

        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
            multipleSiteBindingsEnabled="true" />

    </system.serviceModel>
在Services1.cs文件中的

我编写了如下代码

 [ServiceContract]
    public interface IServices1
    {
        [OperationContract]
        List<TableName> GetList();
    }

然后在IServices1.svc.cs文件中我编写了以下代码

 public class Services1 : IServices1
    {


        public List<TableName> GetList()
        {
            //the below sess variable stores the user id value,based on which the query
            // executes
            int sess = Convert.ToInt32(HttpContext.Current.Session["User"]);
            DreamDataContext Data = new DreamDataContext();
            var value = from s in Data.TableNames where s.To == sess select s;
            return value.ToList();
        }



    }

现在我在MainPage.xaml.cs页面中访问了上面的代码,如下所示

public MainPage()
        {
            InitializeComponent();
            ServiceReference1.Services1Client webservice = new Services1Client();
            webservice.GetListCompleted += new EventHandler<GetListCompletedEventArgs>(webservice_GetListCompleted);

            webservice.GetListAsync();

        }


        public void webservice_GetListCompleted(object sender, ServiceReference1.GetListCompletedEventArgs e)
        {
            //Attached the data to the DataGrid in silverlight
            DataGridImages.ItemsSource = e.Result;
        }

我学到的是对于刚接触WCF的人,如果他们想要根据会话值访问数据,这是最好的方式。