Rus*_*son 8 c# asp.net authentication silverlight session
我正在编写一个既包含ASP.NET配置系统又包含Silverlight应用程序的程序.大多数用户将保留在Silverlight页面上,除了登录等外,不会访问ASP.NET站点.
问题是,我需要会话保持活动以进行身份验证,但即使用户使用silverlight应用程序的功能,会话也会超时.
有任何想法吗?
Ner*_*ury 12
在托管silverlight控件的页面上,您可以设置一个javascript计时器并每隔5分钟对一个Http Handler(.ashx)执行ajax调用以保持会话处于活动状态.一定要实现你的Handler类IRequiresSessionState.
我推荐使用Handler,因为它更容易控制返回的响应文本,并且它比aspx页面更轻量级.
您还需要正确设置响应缓存,以确保浏览器每次都进行ajax调用.
UPDATE
以下是HttpHandler的示例代码
public class Ping : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "text/plain";
context.Response.Write("OK");
}
public bool IsReusable
{
get { return true; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果你使用jQuery,你可以将它放在你的主机aspx页面上
setInterval(ping, 5000);
function ping() {
$.get('/Ping.ashx');
}
Run Code Online (Sandbox Code Playgroud)
间隔以毫秒为单位,因此我的示例将每隔5秒ping一次,您可能希望它是一个更大的数字.Fiddler是调试ajax调用的好工具,如果不使用它,请启动.
| 归档时间: |
|
| 查看次数: |
11261 次 |
| 最近记录: |