我在asp.net页面上有一个分配给它的值的会话,现在我需要从silverlight xaml.cs页面访问该会话值,如何做到这一点,silverlight和web应用程序都在同一个解决方案中?< / p>
答案 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的人,如果他们想要根据会话值访问数据,这是最好的方式。