поделиться сессией Asp.NET webservice - silverlight - PullRequest
0 голосов
/ 16 июня 2011

У меня есть веб-сервис, который выглядит следующим образом

[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class Connector : System.Web.Services.WebService
    {
        private static readonly ILog log = MLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);


        [WebMethod(EnableSession = true)]
        public void SetSession(string session, string value)
        {
            Session[session] = value;
        }

        [WebMethod(EnableSession = true)]
        public string GetSession(string session)
        {
            string result = HttpContext.Current.Session[session] != null ? (string)HttpContext.Current.Session[session] : null;
            log.Info("GetSession :" + session +"-"+result);
            return result;
        }

    }

У меня есть страница asp.net, которая содержит приложение Silverlight.На странице устанавливается ключ сеанса:

 if (Session["Token"] == null)
                {
                    Session["Token"] = Token.GetToken(Connection, HttpContext.Current.Request.ServerVariables["HTTP_HOST"], "")[0].Value;
                    log.Info("Token:" + Session["Token"].ToString());
                }

проблема в том, что когда я вызываю веб-сервис из приложения silverlight, чтобы получить значение сеанса «Token», оно становится нулевым. Журнал выглядит так:

Token:e4d46740-2bb1-4956-a27b-a1af0b908acc <-this is where the session is set
GetSession :Token- <-this is in the webservice where GetSession("Token") is called...

Что я сделал не так?Как поделиться данными сеанса с веб-сервисом?Спасибо, Богдан

1 Ответ

0 голосов
/ 16 июня 2011

Ключ , который вы используете для хранения данных, - это строка «Token», которая является константой, а для ее извлечения вы обязательно используете другую строку для Ключа ..

...