在web请求之间共享资源



在ASP.Net中,有标准的方法在web请求之间共享资源吗?

这是我的问题:

  • 我需要从几个页面的代码后面查询一个web服务
  • 此web服务一次只允许一个登录会话
  • 如果您登录两次,第一个会话将无效
  • 会话存储为字符串,每45分钟过期一次,此时我必须重新进行身份验证
  • 只要两个查询使用同一会话,它们就可以同时运行

话虽如此,让多个页面/请求同时使用此会话的最佳方式是什么?我如何确保会话到期后,在重新登录后,共享新会话?

这一切都在一台服务器上运行。

我会将整个web服务封装在类似服务的类中,并使用类似IoC的ninject来管理该服务的实例。然后,您应该在ninject中创建一个自定义作用域,以使过期的会话无效。

然后在您的asp.net中,每个需要访问该web服务资源的请求都应该要求ninject返回您创建的服务的实例。然后,只要会话有效(假设您拥有自定义作用域权限),ninject就会设法始终返回相同的实例。

如果您的站点运行在一台服务器上,您可以将服务的会话字符串存储在Cache中,它具有与服务器进程相对应的最大生存期和可见性,而不是与客户端的会话之一相对应。

这样,代码的任何部分都可以很容易地掌握当前会话信息,并在尚未缓存的情况下建立新会话。如果您将缓存生存期安排为略短于服务的会话生存期,那么您将永远不会看到会话因为您已过期而拒绝您——您自己的缓存副本将始终首先过期。

我认为您正在寻找的是用于在会话中保持数据的"会话"变量。

http://msdn.microsoft.com/en-us/library/aa287606(v=vs.71).aspx

--编辑---.net的应用程序对象是您正在寻找的对象,它自3.0:msdn.microsoft.com/en-us/library/ms178594(v=vs.85)起应用。ASPX

这样,您就可以在服务器上运行应用程序时保存状态变量。

相关内容

  • 没有找到相关文章

最新更新