Почему мой дочерний класс SessionIDManager не запрашивается для CreateSessionID? - PullRequest
0 голосов
/ 20 мая 2010

Я реализовал веб-приложение с использованием управления состоянием сеанса в соответствии с инструкциями, приведенными на:

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

http://en.aspnet -bhs.info / запись / Государственно-сервера 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 никогда не вызывается, и поэтому идентификаторы сеанса не изменяются с соответствующим идентификатором сервера.

Может кто-нибудь сказать мне, что происходит или что мне также нужно учитывать, что не упоминается в статьях?

Я использую .NET2 с VS2k5.

Спасибо

Мт.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

В функции Validate(string id) вы всегда должны return true, если не хотите, чтобы среда ASP создавала новый сеанс.

0 голосов
/ 19 июля 2010

Я добавил проверку в методе Validate (string id) длины строки идентификатора сеанса. Теперь оно имеет: return id.Length! = 24; Это похоже на работу.

...