0

我已经按照以下说明使用会话状态管理实现了一个 Web 应用程序:

http://blog.maartenballiauw.be/post/2008/01/ASPNET-Session-State-Partitioning-using-State-Server-Load-Balancing.aspx

http://en.aspnet-bhs.info/post/State-Server-Partitioning.aspx

我的 SessionIDManager 继承者包括以下代码:

public class SessionIdManager : System.Web.SessionState.SessionIDManager
{
    public override string CreateSessionID(System.Web.HttpContext context)
{...}

我的 web.config 包含以下代码:

<machineKey
          validationKey="1234567890123456789012345678901234567890AAAAAAAAAA"
          decryptionKey="123456789012345678901234567890123456789012345678"
          validation="SHA1"
          decryption="Auto"
        />
...
<sessionState
            mode="StateServer"
            partitionResolverType="PartitionResolver"
            sessionIDManagerType="SessionIdManager"
            cookieless="false"
            timeout="20"
            />

但是 CreateSessionID 方法永远不会被调用,因此会话 ID 不会使用适当的服务器 ID 进行修改。

有人可以告诉我发生了什么或者我可能还需要考虑文章中未提及的内容吗?

我正在使用 .NET2 和 VS2k5。

谢谢,

马特。

4

2 回答 2

0

我在 Validate(string id) 方法中添加了一个检查会话 ID 字符串的长度。它现在有: return id.Length != 24; 这似乎有效。

于 2010-07-19T07:33:06.343 回答
0

在函数中,如果您不希望 ASP 框架创建新会话Validate(string id),则应始终这样做。return true

于 2010-11-29T21:07:50.840 回答