【问题标题】:How to provide multiple users access in asp.net web application when sessionstate cookieless is set to false?当 sessionstate cookieless 设置为 false 时,如何在 asp.net Web 应用程序中提供多个用户访问?
【发布时间】:2015-03-01 11:46:34
【问题描述】:

我有一个 Web 应用程序应该可供多个用户访问,但是在两个或多个用户登录后会话变为空

这是我的网络配置:

<sessionState cookieless="false" timeout="30"
               regenerateExpiredSessionId="true"/>

【问题讨论】:

    标签: c# asp.net session-cookies


    【解决方案1】:

    我将尝试用我的想象力解决您的问题。

    如果您使用某些用户登录,并且在使用其他用户登录后会话变为null,这应该与导致 IIS 应用程序池崩溃的某些应用程序异常有关,因为我猜您正在使用 进程内会话状态,当应用程序池崩溃或被回收时,所有会话都被丢弃。

    换句话说:检查是否存在可能导致应用程序池崩溃的异常。

    在您的Global.asax 中放置一个Application_Error 事件处理程序并在其中设置一个断点以检测应用程序崩溃。

    更新

    正如@b.pell 在一些评论中指出的那样,会话可能会因为内存不足问题而消失。

    我没有提到你可以使用database session 存储,但有时切换到这种模式并不容易,因为存储在会话中的每个对象都需要可序列化,而序列化/反序列化具有重要影响影响您的整体应用程序性能。

    【讨论】:

    • 毫无理由地投反对票...我相信我已经尝试根据自己的经验,通过非常可能的描述和解决方案来解决这个问题
    • 我相信如果服务器处于内存压力之下并且它正在积极回收内存,会话也会消失。出于这个原因,我曾经让会话在共享主机中一直出现问题(如果这是问题,您可以设置会话以使用数据库而不是在进程中)。 (另外,我不是被否决了)。 :D
    • @b.pell 我可以在我的回答中添加这种情况...谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多