1

我是 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 的URL

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

4

4 回答 4

4

有十几件事可能导致会话数据丢失:

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

由于我们没有足够的信息来准确回答您在具体情况下发生的情况,我希望您从阅读开始,从这里开始:http: //msdn.microsoft.com/en-us/library/ms178581。 aspx

编辑:我确实找到了这篇博客文章,这可能会有所帮助:http: //blogs.msdn.com/b/amenon/archive/2007/08/21/troubleshooting-session-loss.aspx


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

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

于 2012-07-12T18:38:06.823 回答
1

我还发现您应该在使用之前初始化会话的主要问题,例如:

会话[“id”]=“”;

之后它工作得很好

于 2014-02-11T21:05:40.963 回答
0

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

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

希望这可以帮助

于 2012-07-12T21:51:06.050 回答
0

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

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

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

于 2019-05-16T23:42:45.517 回答