2012-07-12 89 views
2

我是ASP.NET 2.0的初学者。这可能听起来对于ASP.NET中的某个专家来说太基本和愚蠢的问题了。但是这给了我无眠夜。在IIS上发布ASP.NET网站后丢失会话信息

基本上我开发了一个简单的多语言网站,主页面和内容页面填充到主页面的内容占位符部分。该应用程序在配置为运行于ASP.NET开发服务器2.0时效果很好。但是,一旦我发布它在IIS Web服务器上运行,它将不再起作用。 :(我可以从跟踪中看到,我使用的任何会话变量都不存储并重定向到相关内容页面

尽管显示了内容,但会根据重定向页面。都将丢失,我碰上例外

请指导我我要去哪里错了,用来发布的应用程序确切的过程

例:我的主页上有它运行像 HTTP网址://本地主机/Onlineupdate/Home.aspx?vers=1.1 & lang = fr-FR

基于上面的URL,我删除并保存变量在Session变量中的版本lang变量。但是,这些在IIS上托管时会丢失。

回答

5

有十几个这样的事情,可能会导致会话数据丢失:

  • 重新启动IIS
  • 应用程序池重新启动
    • 由于改变到web.config
    • 由于\ bin目录中的任何内容发生更改
    • 达到的内存限制或导致应用程序池重置的错误。
    • 其他几个可能的原因
  • 您的主机其实就是一个Web场,而你使用过程中的内存,这会导致一些问题,当一台服务器故障转移到另一个,除非你使用SQL服务器会话状态模式。

因为我们没有足够的信息来回答究竟什么是发生在你具体的情况,我想请你阅读起来开始,从这里开始:http://msdn.microsoft.com/en-us/library/ms178581.aspx

编辑:我发现这个博客文章,这可能会有所帮助:http://blogs.msdn.com/b/amenon/archive/2007/08/21/troubleshooting-session-loss.aspx


以下内容不一定是答案的一部分,但为了帮助您做出补充。

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

+0

谢谢你的提示。但我开发的网站几乎是**静态网站。它只是读取一些资源来渲染一些标签文本。除此之外,它不使用任何后端数据库访问。你还推荐使用SQL Server会话状态方法吗? – 2012-07-13 03:55:05

+0

如果它位于服务器场中,或者如果你神秘地丢失了会话数据,并且它是一个可行的选项(你不必为此仅仅为了SQL Server许可证而掏空),那么是的。 – David 2012-07-13 04:10:48

+0

那么,据我所知,会话变量不会工作,如果我不使用SQL Server(企业或标准)。我的意思是,如果会话变量必须存储在SQL Server模式下,SQLExpress也没有用处。 – 2012-07-13 05:05:23

0

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

提示:您可以使用文件观察家这将监听的web.config(或你在你的web应用程序使用任何配置)更改,并把它包装成一个悦目配置,以便您可以在更改配置时重新加载配置。

希望这有助于

1

还我发现,你应该使用 像以前一样初始化会话的主要问题:

会议[“ID”] =””;

之后,它还有做工精细