2014-01-03 4 views
2

У меня есть сеанс на странице asp.net со значением, назначенным ему, теперь мне нужно получить доступ к этому значению сеанса с страницы silverlight xaml.cs, как это сделать, и Silverlight и веб-приложение находятся в одном решении?Передача значения сеанса Silverlight через WCF?

ответ

0

Я думал, что на странице xaml.cs я хочу запросить данные при условии, что данные для запроса должны быть данными идентификатора пользователя, хранящегося в сеансе, но позже, что я сделал, в файл WCF я создал я сделал следующее,

на beggining я в проверяемой, если файл web.config имеет aspNetCompatibilityEnabled = «истинный»

<system.serviceModel> 

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

    </system.serviceModel> 

в Services1.cs файле я написал код, как показано ниже

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

затем в файле IServices1.svc.cs i wro т.е следующий код

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, если они хотят доступ к данным на основе значения сеанса - это лучший способ.

0

добавить follwoing настройки в web.config и сеанса доступа из HttpContext

<system.serviceModel> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel> 

Update набор переменной сеанса в WCF службы, как показано ниже

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

и доступ к этой переменной в Silverlight, как показано ниже

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

он включен, должен ли я хранить значение сеанса переменной в файле WCF с использованием HttpContext? но я не могу этого сделать, можете ли вы написать код –

+0

iam не удалось добавить пространство имен system.web на страницу xaml.cs для доступа к HttpContext –

Смежные вопросы