【问题标题】:Possible to separate out a web application to multiple machines with different purposes, sharing the same session?可以将 Web 应用程序分离到具有不同目的的多台机器上,共享同一个会话吗?
【发布时间】:2012-12-04 20:13:23
【问题描述】:

如果你能提供帮助,我正在寻找建议、帮助或“你不能那样做”的答案。

我在一个使用 .NET 4.0 的 .NET 开发团队中,并在 MVP 中运行一个 Web 应用程序。现在,我们有一个由 4 个运行 Win2K3 和 IIS 6(明年升级)的 IIS 机器组成的网络农场,并且一个 F5 BigIP 设备正在使用粘性会话来跨越所有四个机器的流量。由于它的成功,我们的应用程序的规模和范围正在扩大。我向你保证,这是一个很好的问题。然而,我们正在经历成长的痛苦。我们希望在当前使用的 4 台机器上保留事务性工作(通过各种 Web 表单添加/编辑/删除),然后添加另外 2 台机器,仅用于报告/指标的工作量。

这是我们想要做的:

  1. 使用可用的 Oracle.Web.dll 对象类将会话状态放入我们的 Oracle 数据库,并针对我们的 Oracle 11g DB 运行 .SQL 文件以正确设置会话。因此,如果一个盒子死了,会话数据仍然存在。

  2. 设置我们的 web.config 以在所有 4 个当前框内为我们的会话提供程序使用 Oracle 数据库。

到目前为止一切顺利。这是相当基本且可重复的。不用担心。这是我卡住的地方:

  1. 我们想要提取此应用程序的报告 ASPX 文件并将它们放在 2 个不同的(新)IIS 框(现在总共 6 个)上,F5 BigIP 仅对这两个进行负载平衡以进行报告使用粘性会话。剩下的 4 个则留给 OLTP 事务性工作,不带报告。

  2. 1234563授权并使用他们的用户权限填充安全类以运行报告。报告是应用程序的一部分,但是它只会处理报告部分,并且只有该代码会被放到 2 台新机器上。如果当前用户的会话仍然处于活动状态、有效并且我们可以访问它,它就可以独立运行。

这几乎就像我们想要一个分布式应用程序结构,其中不同的 IIS 服务器运行 Web 应用程序的不同部分,但共享会话状态。

有没有人遇到过这样的事情?这是可能的还是不可能的?还是有更好的选择?感谢您提供的任何帮助。

【问题讨论】:

    标签: .net oracle session iis shared


    【解决方案1】:

    你绝对可以做到这一点。您必须为每个应用程序提供相同的machineKey。从这里开始:http://support.microsoft.com/kb/2527105 和这里:simple bing query

    【讨论】:

    • 所有 4 台机器都有相同的机器密钥,所以我可以确保我们添加的剩余 2 台机器也具有相同的机器密钥。多谢!完美的第一个链接。现在我知道用 Bing 查询搜索什么了。非常感谢!
    • 我刚刚实现了这个并且效果很好。我必须运行 aspnet_regsql –ssadd –sstype p –E -S localhost\sqlexpress 以便 asp 会话状态是持久的,因为客户是谁以及他们允许什么。除此之外,它就像一个魅力!如果我不希望它用于审计目的,我可以稍后清理会话状态。
    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多