前边一篇文章中,说了一下WCF和Asp.net的session共享,现在实现Silverlight的过期退出和WCF服务session失效的同步方案。
Silverlight的bussiness模板中已经包含了超时认证的部分,现作为借鉴,实现了WCF服务端session失效和Silverlight过期的同步。
1. 在web.config中设置session过期的时间:
2. 在aspx的 页面中读取其配置过期时间到silverlight中。
[csharp]
?
- public partial class Default : System.Web.UI.Page
- {
- protected override void OnLoad(EventArgs e)
- {
- if (!User.Identity.IsAuthenticated)
- {
- string url = Request.Url.ToString();
- url = url.Replace("&", "%26");
- string urlBase64 = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(url));
- string urlRedirect = string.Format("{0}?ReturnUrl={1}", FormsAuthentication.LoginUrl, urlBase64);
- Response.Redirect(urlRedirect);
- return;
- }
- else
- {
- UserId = HttpContext.Current.User.Identity.Name; // 读取session过期时间
- int formTimeOut =(int)FormsAuthentication.Timeout.TotalMinutes;
- Timeout = HttpContext.Current.Session.Timeout >= formTimeOut
- ? formTimeOut
- : HttpContext.Current.Session.Timeout;
- base.OnLoad(e);
- }
- void Page_Load(object sender, EventArgs e)
- {
- }
- public string UserId { get; set; }
- int Timeout { }
?@H_404_282@