代码之家  ›  专栏  ›  技术社区  ›  Nij

更改Web应用程序项目的IIS 6应用程序池

  •  0
  • Nij  · 技术社区  · 15 年前

    在最近的硬件问题之后,我尝试切换我们的几个网站以使用新的、单独的应用程序池。在我们的登台服务器上进行的测试运行工作良好,没有明显的负面影响。

    不幸的是,在我们的实时机器上尝试相同的操作让我们的一个关键应用程序陷入困境——我的最佳猜测是会话状态中存在某种不匹配。我可以很好地登录,但几次点击之后会显示一个部分登录屏幕,但所有菜单都可见。这对我来说意味着 部分 系统认为会话已丢失(重定向到登录页),但IIS本身没有丢失会话(因此,菜单显示在母版页上)。

    我尝试回收所有的应用程序池(新的和旧的),以及使用IIS管理器的每个网站。我还尝试了对web.config文件进行一次空间更改,并完全释放dll。不过,我仍然可以间歇地使用系统进行几次单击,做一些有用的事情,然后再次在登录屏幕上找到自己或类似的。我们有一些日志记录,在某些情况下,我可以看到会话在几秒钟后超时,大大低于应用程序池中的设置(默认20分钟)。

    当我将网站的应用程序池切换回默认值时,一切又恢复正常。

    我错过了什么?感谢您的建议!

    编辑:

    只是想…在登台环境中,我的确将应用程序池命名为不同于网站名称(例如XXXX_dev、XXX_test等),但在现场,我只是将其命名为与网站相同的名称。这会引起问题吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   StevenMcD    15 年前

    您的各种应用程序都使用窗体身份验证吗?您是否在web.config的每个表单标记的身份验证标记下指定了唯一的路径属性?

        2
  •  0
  •   Nij    15 年前

    好啊。我想我发现了问题。

    我实际上使用的是一个应用程序池,它是由其他人设置的(按预期的名称),但他们使用属性、性能选项卡Web花园选项设置的,可以使用4个工作进程。我现在把它改成了1。

    当会话状态被存储为“进程中”(默认),每次连接到达一个新线程时,它实际上也会丢失所有存储的会话变量,正如我现在理解的那样。

    它的早期版本,但只需简单地切换到新更改的应用程序池(到目前为止不需要重新启动或web.config保存),一切都正常运行。