【发布时间】:2010-06-03 15:51:31
【问题描述】:
我正在制作一个 .net 组件,生成一个 dll 程序集,该程序集将由 asp.net 站点引用,并在另一个项目中由 asmx webservice 引用。所有代码都是2.0版本。
该组件有一些调用外部 Web 服务的函数,该 Web 服务返回一个对象。例如,其中一个函数是 Login(username, password),它会为此用户生成一个唯一的会话 ID。生成的信息和会话 id 存储在组件的变量中。
网站的问题是: 当用户在前端登录时,我的组件被调用并检查登录并生成会话 ID,我希望当用户浏览到站点中的另一个页面时,我的组件中的该信息仍然存在。
使用我的组件的 Web 服务中的问题是: 我不太关心会话状态,但我希望组件能够正常工作。如果每次调用都会生成一个新的会话 id,那没关系。
这两种环境的组合对我造成了以下问题:
- 如果不引用 system.web,我就不能在我的组件中使用 asp.net Session() 变量,这有点傻,并且可能在包含我的组件的 Web 服务项目中不可用
- 我无法将我的组件编程为单例,因为在网站应用程序中,它在所有访问者之间共享,覆盖会话等等
- 在我的组件中制作一组“会话信息”并对其进行维护,这很难编程(它何时会失效?)并且可能无法在网络农场环境中工作
这种情况有解决办法吗?或者我应该为我的组件创建两个实例,一个用于网站,一个用于 Web 服务?
【问题讨论】:
-
很遗憾,我无法访问将使用该组件的数据库。
标签: asp.net web-services