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

时间:2012-07-12 18:30:18

标签: asp.net .net iis-6 publishing-site

我是ASP.NET 2.0的初学者。对于ASP.NET中的某位专家来说,这可能听起来太基础和愚蠢。但是这给了我不眠之夜。

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

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

请指导我出错的地方和发布申请的确切程序。

例如:我的主页上有运行类似的网址 ?的 HTTP://localhost/Onlineupdate/Home.aspx VERS = 1.1&安培; LANG = FR-FR

根据以上网址,我在会话变量中删除并保存 vers lang 变量。但是,在IIS上托管时会丢失这些内容。

4 个答案:

答案 0 :(得分:5)

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

  • IIS重新启动
  • 应用池重新启动
    • 由于对web.config的更改
    • 由于对\ bin目录中的任何内容进行了更改
    • 达到内存限制,或导致应用程序池重置的错误。
    • 其他几个可能的原因
  • 您的主机实际上是一个Web场,并且您正在使用进程内存,这会在一台服务器故障转移到另一台服务器时导致问题,除非您使用的是SQL Server会话状态模式。

由于我们没有足够的信息来准确回答 特定 情况中发生的情况,因此我请您先阅读,从这里开始:{ {3}}

编辑 我找到了这篇博文,可能会有所帮助:http://msdn.microsoft.com/en-us/library/ms178581.aspx


以下内容不一定是答案的一部分,但为了尝试提供帮助而添加。

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

答案 1 :(得分:1)

我也发现了在使用前应初始化会话的主要问题 像:

  

会话[“ID”] =””;

之后,它运作良好

答案 2 :(得分:0)

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

提示:您可以使用文件观察器来监听 web.config (或任何配置 strong>您在web.app中使用)进行更改并将其包装为可观看的配置,以便您可以在更改后重新加载配置。

希望这有帮助

答案 3 :(得分:0)

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

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

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