обмен данными сеанса между доменами в asp.net, запутался! - PullRequest
0 голосов
/ 03 июня 2010

Хорошо, вот моя проблема, я хочу сохранить данные сеанса между двумя приложениями или доменами (например: - www.abc.com и secure.abc.com).

Я читал об этом в сети, но многие люди указывали на различные способы сделать это, когда люди комментировали + ve и -ve ответы на все. Кроме того, многие просто дают теоретический ответ, делают это и то, но никакого кода вообще.

эти шаги - все, что требуется? 1) в web.config: <httpCookies domain=".abc.com"/>

2) сохранить данные сеанса в БД sql как: (после подготовки БД для хранения сеансов)

<sessionState mode="SQLServer" sqlConnectionString="Data Source=YourServer;
Integrated Security=True;database=MySessionDB" sqlCommandTimeout="30" 
allowCustomSqlDatabase="true"/>
<machineKey decryption="AES" validation="SHA1" decryptionKey="..." validationKey="..." />

3) Я не совсем понимаю, как это сделать: я хочу установить домен для куки-файла сессии следующим образом Response.Cookies ["ASP.NET_SessionId"]. Domain = ".abc.com"; Но где этот код должен быть написан? эта запись: http://mgrzyb.blogspot.com/2007/12/aspnet-and-subdomains.html говорит: используйте System.Web.SessionState.SessionIDManager в качестве базового класса, но метод SaveSessionID не является виртуальным, поэтому его нельзя переопределить. Возможные варианты: либо явно переопределить метод интерфейса, либо украсить класс SessionIDManager, и после вызова SessionIDManager.SaveSessionID установить Response.Cookies [SessionIdCookieName]. Домен в наш домен.

Только если автор предоставил реальный код, шаг 3 был бы понятен.

Может ли кто-нибудь предоставить код для него.

Плюс всего этого достаточно трех шагов, чтобы разделить сеанс между доменами?

1 Ответ

1 голос
/ 04 июня 2010

оператор третьего шага можно записать в global.asax в соответствии с: http://www.know24.net/blog/ASPNET+Session+State+Cookies+And+Subdomains.aspx

protected  void Application_PreRequestHandlerExecute(Object sender, EventArgs e)

{

  /// only apply session cookie persistence to requests requiring session information



  #region session cookie

  if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState )

  {

    /// Ensure ASP.NET Session Cookies are accessible throughout the subdomains.



    if (Request.Cookies["ASP.NET_SessionId"] != null && Session != null && Session.SessionID != null)

    {

      Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID;

      Response.Cookies["ASP.NET_SessionId"].Domain = ".abc.com"; // the full stop prefix denotes all sub domains

      Response.Cookies["ASP.NET_SessionId"].Path = "/"; //default session cookie path root         

    }

  }

  #endregion    

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