在IIS上发布ASP.NET网站后丢失会话信息

在IIS上发布ASP.NET网站后丢失会话信息,asp.net,.net,iis-6,publishing-site,Asp.net,.net,Iis 6,Publishing Site,我是ASP.NET 2.0的初学者。对于ASP.NET的专家来说,这可能听起来太基本和愚蠢了。但这让我睡不着觉 基本上,我开发了一个简单的多语言网站,其中包含母版页和内容页,这些内容页填充母版页的内容占位符部分。如果将应用程序配置为在ASP.NET Development Server 2.0上运行,则该应用程序将运行良好。但一旦我将其发布到IIS web服务器上运行,它将不再工作:(我可以从跟踪中看到,我使用的会话变量都没有被存储并重定向到相关的内容页 虽然显示了内容,但我在重定向页面上做出某

我是ASP.NET 2.0的初学者。对于ASP.NET的专家来说,这可能听起来太基本和愚蠢了。但这让我睡不着觉

基本上,我开发了一个简单的多语言网站,其中包含母版页和内容页,这些内容页填充母版页的内容占位符部分。如果将应用程序配置为在ASP.NET Development Server 2.0上运行,则该应用程序将运行良好。但一旦我将其发布到IIS web服务器上运行,它将不再工作:(我可以从跟踪中看到,我使用的会话变量都没有被存储并重定向到相关的内容页

虽然显示了内容,但我在重定向页面上做出某些决定所依据的会话变量值丢失,并且遇到异常

请告诉我哪里出了问题,以及发布申请的确切程序

我的主页上有一个URL,它的运行方式如下 http://localhost/Onlineupdate/Home.aspx?vers=1.1&lang=fr-FR


基于上述URL,我将剥离并保存会话变量中的verslang变量。但是,当托管在IIS上时,这些变量会丢失。

有十几种情况可能会导致会话数据丢失:

  • IIS重新启动
  • 应用程序池正在重新启动
    • 由于web.config的更改
    • 由于\bin目录中的任何内容发生了更改
    • 已达到内存限制,或出现导致应用程序池重置的错误
    • 其他几个可能的原因
  • 您的主机实际上是一个web场,并且您正在使用进程内内存,当一台服务器故障切换到另一台服务器时,这将导致问题,除非您使用的是SQL server会话状态模式
由于我们没有足够的信息来准确回答您的具体情况下发生了什么,我请您从这里开始阅读:

编辑:我确实找到了这篇博客文章,可能会有帮助:


以下内容不一定是答案的一部分,而是为了尽量提供帮助而添加的


如果可行的话,根据我个人的经验,我们已经通过使用SqlServer会话状态模式成功地消除了丢失的会话问题。自从我们实现了这一点后,会话问题几乎消失了。

有十几种情况可能会导致会话数据丢失:

  • IIS重新启动
  • 应用程序池正在重新启动
    • 由于web.config的更改
    • 由于\bin目录中的任何内容发生了更改
    • 已达到内存限制,或出现导致应用程序池重置的错误
    • 其他几个可能的原因
  • 您的主机实际上是一个web场,并且您正在使用进程内内存,当一台服务器故障切换到另一台服务器时,这将导致问题,除非您使用的是SQL server会话状态模式
由于我们没有足够的信息来准确回答您的具体情况下发生了什么,我请您从这里开始阅读:

编辑:我确实找到了这篇博客文章,可能会有帮助:


以下内容不一定是答案的一部分,而是为了尽量提供帮助而添加的


如果可行的话,根据我个人的经验,我们已经通过使用SqlServer会话状态模式成功地消除了丢失的会话问题。自从我们实现了这一点,我们的会话问题几乎消失了。

为了防止这种情况首先在web.config中设置restartOnExternalChanges为false。 现在在web.config中,必须手动传播更改(这意味着开发人员现在负责构建配置更改传播机制)

提示:您可以为此使用文件监视程序,该程序将侦听web.config(或您在web.app中使用的任何配置)以进行更改,并将其包装为可监视配置,以便在更改配置时重新加载


希望这有助于

,以防止这种情况首先在web.config设置中发生。 现在在web.config中,必须手动传播更改(这意味着开发人员现在负责构建配置更改传播机制)

提示:您可以为此使用文件监视程序,该程序将侦听web.config(或您在web.app中使用的任何配置)以进行更改,并将其包装为可监视配置,以便在更改配置时重新加载


希望这对您有所帮助。

此外,我还发现了一个主要问题,即您应该在使用前初始化会话 比如:

会话[“id”]=“”


在那之后,它工作得很好

我还发现了一个主要问题,即在使用之前应该初始化会话 比如:

会话[“id”]=“”


在那之后,它很好地工作了

我在我的ASP.NET MVC网站上也遇到了同样的问题。 我已经通过以下步骤解决了这个问题:

  • 打开IIS管理器
  • 转到应用程序池
  • 右键单击与您的网站相关的应用程序池
  • 点击“高级设置”
  • 将“空闲超时(分钟)”设置为“20”
  • 将“最大工作进程数”设置为“1”
  • 单击“确定”关闭窗口

  • 这些步骤解决了我的问题。

    我在ASP.NET MVC网站上遇到了同样的问题。 我已经通过以下步骤解决了这个问题:

  • 打开IIS管理器
  • 转到应用程序池
  • 右键单击与您的网站相关的应用程序池
  • 点击“高级设置”
  • 将“空闲超时(分钟)”设置为“20”
  • 将“最大工作进程数”设置为“1”