繁体   English   中英

在Web请求之间共享资源?

[英]Sharing resources between web requests?

在ASP.Net中,是否存在在Web请求之间共享资源的标准方法?

这是我的问题:

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

话虽这么说,将这个会话同时提供给多个页面/请求的最佳方法是什么? 以及如何确保会话期满后,重新登录后共享新会话?

所有这些都在单个服务器上运行。

我会将整个Web服务包装在类似服务的类中,并使用像ninject这样的IoC来管理该服务的实例。 然后,您应该在ninject中提出自定义范围 ,以使过期的会话无效。

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

我认为您正在寻找的是“会话”变量,用于保持数据通过会话。

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

-编辑---您正在寻找.net的Application对象,它从3.0开始适用:msdn.microsoft.com/zh-cn/library/ms178594(v=vs.85).ASPX

这样,您将在服务器中运行应用程序时保存状态变量。

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

然后,代码的任何部分都可以轻松掌握当前会话信息,并在尚未缓存的情况下建立新会话。 如果您将缓存生存期安排为比该服务的会话生存期略短,那么您将永远不会看到会话拒绝您已过期-您自己的缓存副本将始终优先过期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM