我有一个网络服务器,而且我的团队已将Web应用程序的应用程序池设置为3,以实现静音和性能。但是,我们偶然发现部分应用程序未完全正常工作的问题。会话状态和应用程序池
我们认为问题出在应用程序的这部分使用会话的地方,我们认为当数据回发时它不会链接回正确的工作进程。
但是,我不确定这一点,或者我是否应该在web.config中使用SessionState。如果我是对的,模式应该是InProc,SessionState还是其他?会话中是否有超时?
有人可以请教我吗?
我有一个网络服务器,而且我的团队已将Web应用程序的应用程序池设置为3,以实现静音和性能。但是,我们偶然发现部分应用程序未完全正常工作的问题。会话状态和应用程序池
我们认为问题出在应用程序的这部分使用会话的地方,我们认为当数据回发时它不会链接回正确的工作进程。
但是,我不确定这一点,或者我是否应该在web.config中使用SessionState。如果我是对的,模式应该是InProc,SessionState还是其他?会话中是否有超时?
有人可以请教我吗?
因此,您已将应用程序分成三部分放在同一台服务器上,每台服务器都在IIS自己的应用程序池下运行?我会挑战背后的假设,但那不是你的问题。
我不认为你可以做到这一点,并使用开箱即用的工具共享会话状态。它使用站点(元数据库)路径作为会话状态“密钥”的一部分,因此来自不同站点的会话不会发生冲突。
但是,如果你能做到这一点,你需要使用out-of-proc sessionState模式之一(StateServer或SQLServer)。
我还没有试过以下,但他们可能会帮助你。
以下是Code Project article的链接,该链接描述了将SQL Server会话更改为组网站和共享会话。
以下是指向ASP 101 article的链接,它描述了与子站点共享会话的一种方式。不知道这是否适用于您的情况与不同的应用程序池。
编辑:
啊,一个网络花园。是的,您的工作进程不共享InProc会话数据。您需要使用外部提供商。 StateServer工作正常。您需要在服务器上启用ASP.NET状态服务并更新您的web.config以使用它。有一些事情要考虑它:
网上有很多资源可以帮助解决这个问题,这里是一个例子blog post。
不完全。这部分应用程序有自己的web.config,因为应用程序的每个部分都是在Visual Studio 2010中的解决方案中构建为项目。在IIS上,我们为此应用程序提供了自己的网站和应用程序池,并在应用程序池中为其提供了它3个asp.net工作进程或Web远程访问。如果应用程序池被设置为默认值,那么它很好,并按预期工作,将其设置为3 - 它不会。我不认为使用SQL Server是可能的,因为我们使用的数据库是Oracle。 – Andy5 2011-02-15 23:09:26