Silverlight 插件和 ASP.NET 会话

发布于 2024-10-30 15:17:50 字数 241 浏览 0 评论 0 原文

  1. 当 Silverlight 插件未进行任何工作/交互时,托管 Silverlight 插件的 ASP.NET 页面的会话是否会过期/超时?

  2. 如果 ASP.NET 会话超时为 20 分钟,并且用户继续与 Silverlight 插件交互四十分钟,ASP.NET 会话是否会超时?

注意:

按会话,我指的是 WCF 服务和 ASP.NET 主机页面上使用的会话变量,

  1. will the session of the ASP.NET page hosting the Silverlight plugin expire/timeout when no work/interaction is done on the Silverlight plugin?

  2. if ASP.NET session timeout is say 20 minutes and the user continues interaction with the Silverlight plugin for forty minutes, will the ASP.NET session timeout or not?

note:

by session, i am referring to the session variables used in my WCFservice and on the ASP.NET host page,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿嘿嘿 2024-11-06 15:17:50

答案很简单,是的,它会超时。

您应该将 Silverlight 应用程序视为 JavaScript 应用程序或任何桌面应用程序。如果您在执行 SL 应用程序期间未明确执行与 ASP.NET 应用程序的交互,则 ASP.NET 将不知道您的用户处于活动状态:ASP.NET 只能根据 HTTP 请求刷新会话。

但是您可以通过向您的网站发送请求来维护 Silverlight 应用程序的会话(又名 keepalive 请求,或更有用的东西,这取决于您的要求)

使用浏览器堆栈将 cookie 发送到 ASP.NET 以及您使用 WebClient 的请求Silverlight 中的类。如果您不想从 SL 应用程序执行此逻辑(因此使其不受这些考虑因素的影响),JavaScript 计时器和 jquery 也可以实现这一目的。

使用 Silverlight 保持活动

浏览器网络堆栈是默认情况下在 Silverlight 上启用,因此如果您没有更改任何内容,您的应用程序将使用它。

如果您只想为您的会话实现保持活动状态,请向您的站点添加由 ASP.NET 处理的 URL(一个 aspx 文件,或一个路由,一个处理程序...,具体取决于您的网站实现(例如 /KeepAlive.aspx)。 aspx ))

在 silverlight 应用程序中,使用此代码添加 计时器到应用程序。它将通过 WebClient 每 X 分钟上课一次。

var timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0,5,0)//run every 5 minutes (should be shorter than your session timeout.
timer.Tick+=(s,args)=>
  {
    var client = new WebClient();
    client.DownloadStringAsync(keepAliveUrl);
  };
timer.Start();

该代码应在应用程序启动后调用(例如在 App.xaml.cs 文件中)

使用 JS (JQuery) 保持活动

在 SL 托管页面中,使用 JQuery 在页面加载后每 X 分钟在服务器上执行相同的 get 请求。

$.get('/KeepAlive.aspx', function(data) {});

The answer is simply yes, it will timeout.

You should see the Silverlight application as a javascript app, or as any desktop app. If you don't explicitely perform interactions with your ASP.NET app during the execution of the SL App, ASP.NET won't know that your user is active: ASP.NET is only able to refresh sessions on HTTP request.

But you can maintain the session from the Silverlight App by sending requests to your website (aka keepalive requests, or something more useful, it depends on your requirements)

Use the browser stack to send the cookies to ASP.NET with your request using the WebClient class in Silverlight. A javascript timer and jquery could do the trick too, if you don't want to perform this logic from your SL App (therefore keeping it free from these considerations)

Keep Alive with Silverlight

The browser network stack is enabled by default on Silverlight, therefore if you didn't change anything, your app will use it.

If you only want to implement a keep alive for your session, add to your site an URL processed by ASP.NET (an aspx file, or a route, an handler... depending on your web site implementation (for instance /KeepAlive.aspx ))

in your silverlight application, use this code to add a timer to the application. It will perform a web request through the WebClient class every X minutes.

var timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0,5,0)//run every 5 minutes (should be shorter than your session timeout.
timer.Tick+=(s,args)=>
  {
    var client = new WebClient();
    client.DownloadStringAsync(keepAliveUrl);
  };
timer.Start();

The code should be called after application startup (for instance in the App.xaml.cs file)

Keep Alive with JS (JQuery)

In your SL hosting page, use JQuery to perform the same get request on the server, every X minutes from page load.

$.get('/KeepAlive.aspx', function(data) {});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文