2009-10-19 61 views
2

很长时间ASP.NET Webforms开发人员,Ajax开发的新手(主要通过UpdatePanel控件!)。ASP.NET AJAX并保持会话活着 - 执行它的标准方式是什么?

由于没有发生回发,服务器不会重置用户的会话超时计数器,即使用户正在与页面交互并刷新其中的一部分。

我想知道当使用UpdatePanel开发Ajax时,保持ASP.NET会话活着的最简单和最标准的方法;

请在答案中提供代码和/或链接;我搜索的内容是关于框架,JQuery,JSON以及任何一个月缩写词的味道,我不需要任何花哨,只是简单的标准方式,我不在乎它是否没有优化等等。 : - |

+4

使用ASP.Net更新面板时仍有回传。唯一的区别是只有更新面板中的控件才会更新。在页面加载事件中放置一个断点,你会发现一切仍然正常。 – GenericTypeTea 2009-10-19 08:08:41

+0

那么你是说我不需要做任何事情来重置超时时间?由于回发已经发生,它已经被重置? – joedotnot 2009-10-19 09:35:33

回答

1

As GenericTypeTea评论说,使用.NET AJAX和UpdatePanel时有服务器端回发。唯一的区别是整个页面没有加载。所有服务器端代码都是正常触发的,但是使用AJAX技术以不同方式在服务器和页面之间发送信息。

您甚至可以使用.NET调用PageMethods的机制从客户端JavaScript调用服务器端方法。与传统的UpdatePanel技术相比,这是在.NET中使用AJAX的更“手动”方式。

+1

重复上面的评论:那么你是说我不需要做任何事情来保持重置超时时间?由于回发已经发生,它已经被重置? – joedotnot 2009-10-19 09:38:00

+0

是的。如果在这种情况下会话不会继续存在,这将是微软的一个可怕的设计缺陷......您是否遇到过一些实际问题,或者您是否认为这会是一个问题? – awe 2009-10-19 09:51:44

+0

我有一个需要调查的bug,所以想通过理解标准行为来提前;您的回复告诉我使用UpdatePanel和Ajax不是问题。我将在未来几天内提供更新。谢谢。 – joedotnot 2009-10-19 10:02:08

0

我会说使用隐藏的iframe进行通信将是最简单的方法,最简单。 http://weblogs.asp.net/stephensonger/archive/2009/04/22/keeping-asp-net-sessions-alive.aspx 有一个很好的例子,你可以扩展。

+0

我看不出你的例子与Ajax有关。除了我不想让页面一直重置超时时间外,重置应该仅在真正的用户交互时发生 - 无论是通过回发还是Ajax局部页面刷新。 – joedotnot 2009-10-19 09:54:48

+0

隐藏的iframe可以提供最有效的方法来实现需要更新服务器的保持活动功能。 您可以使用ScriptManager的RegisterStartupScript方法通过任何基本的javascript函数与隐藏的iframe进行通信。然后你可以通过JavaScript /服务器端回调来管理你的会话。 或者,您最好使用jQuery或类似的服务,并使用$ .post(..)方法来实现ajax通信/功能。 – 2009-10-19 15:54:38