【问题标题】:Changing IIS 6 Application Pools for a Web App Project更改 Web 应用项目的 IIS 6 应用程序池
【发布时间】:2009-05-27 22:10:43
【问题描述】:

在最近出现硬件问题后,我尝试将我们的几个网站切换为使用新的、单独的应用程序池。在我们的暂存服务器上运行的测试运行良好,没有明显的负面后果。

不幸的是,在我们的实时机器上尝试相同的操作让我们的一个关键应用程序陷入困境 - 我最好的猜测是会话状态存在某种不匹配。我可以正常登录,但点击几下后会出现一个屏幕,该屏幕是部分登录屏幕,但所有菜单都可见。这向我表明 部分 系统认为会话已丢失(重定向到登录页面),但 IIS 本身并没有丢失会话(因此菜单显示在母版页上)。

我尝试回收所有应用程序池(新旧),以及使用 IIS 管理器的每个网站。我还尝试了对 web.config 文件的单空格更改,以及 dll 的完整版本。尽管如此,我仍然可以间歇性地使用系统,点击几下,做一些有用的事情,然后可能会再次进入登录屏幕或类似的界面。我们有一些日志记录,在某些情况下,我可以看到会话在几秒钟后超时,大大少于应用程序池中的设置(默认 20 分钟)。

我将网站的应用程序池切换回默认设置后,一切都恢复正常。

我错过了什么?任何建议都非常感谢!

编辑:

只是想...在暂存环境中,我确实将应用程序池命名为与网站名称不同(例如 Xxxx_Dev、Xxx_Test 等),但在现场我只是将其命名为与网站相同的名称。这会导致问题吗?

【问题讨论】:

    标签: asp.net iis-6


    【解决方案1】:

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

    【讨论】:

    • 不太清楚这个的历史,我认为它是在 ASP v1 中手工制作的:配置中的身份验证模式是“Windows”,登录页面代码使用 FormsAuthenticationTicket 等。记住,但是,这台机器上的配置与登台环境上的配置相同。
    【解决方案2】:

    好的。我想我找到了问题所在。

    我实际上使用的是由其他人设置的应用程序池 - 使用预期的名称 - 但他们使用“属性”、“性能”选项卡 | 设置了它。使用 4 个工作进程的 Web Garden 选项。我现在已将其更改为 1。

    由于会话状态被存储在“进程中”(默认),每次连接遇到新线程时,它基本上也会丢失任何存储的会话变量,正如我现在所理解的那样。

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

    【讨论】:

    • 我已将自己的答案标记为正确,因为自从更改此设置后,问题就没有再次出现。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2011-10-17
    • 2011-01-10
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多