Сеанс в веб-службе с поддержкой Silverlight - PullRequest
0 голосов
/ 07 апреля 2011

Я создал службу WCF с поддержкой Silverlight, которая выглядит следующим образом: я использую basicHttpBinding

[ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class SLWebService
    {


        [OperationContract]
        public string Login(string username, string password)
        {
            //Validate Username and Password against the Database.
           // myctxt.Session["Uname"] = username;
            HttpContext.Current.Session["username"] = username ;
            return username;
        }

        [OperationContract]
        public string ReturnUser()
        {
            return (string)HttpContext.Current.Session["username"];
        }

    }
}

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю значение имени пользователя, равное нулю каждый раз.Я использую эту службу WCF в клиенте Silverlight, которая выглядит следующим образом:

Page.xaml.cs:

private void btnSubmit_Click(object sender, RoutedEventArgs e)
        {
            SessionService.SLWebServiceClient client = new SessionService.SLWebServiceClient();
            client.LoginAsync(txtuser.Text, txtpassword.Password);    
            NavigateRequest(1); 

        }

Welcome.xaml.cs

void Welcome_Loaded(object sender, RoutedEventArgs e)
        {
            SessionService.SLWebServiceClient client = new SessionService.SLWebServiceClient();
            client.ReturnUserCompleted += new EventHandler<SessionService.ReturnUserCompletedEventArgs>(client_ReturnUserCompleted);
            client.ReturnUserAsync(); 
        }

        void client_ReturnUserCompleted(object sender, SessionService.ReturnUserCompletedEventArgs e)
        {
            txtusername.Text = e.Result; 
        }

Ясоздание страницы входа (Page.xaml) и ввод имени пользователя и пароля, после чего он перенаправляет на страницу приветствия, которая приветствует текущего пользователя, но моя служба не возвращает имя пользователя, для которого сеанс пуст.

Спасибо.

1 Ответ

2 голосов
/ 08 апреля 2011

Добавить [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] выше "public class SLWebService"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...