在IIS上发布ASP.NET网站后丢失会话信息
我是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在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服务器上运行,它将不再工作:(我可以从跟踪中看到,我使用的会话变量都没有被存储并重定向到相关的内容页 虽然显示了内容,但我在重定向页面上做出某
基于上述URL,我将剥离并保存会话变量中的vers和lang变量。但是,当托管在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网站上也遇到了同样的问题。 我已经通过以下步骤解决了这个问题:
这些步骤解决了我的问题。我在ASP.NET MVC网站上遇到了同样的问题。 我已经通过以下步骤解决了这个问题: