Как долго живет объект в CodeBehind? - PullRequest
2 голосов
/ 28 апреля 2011

Если я создам объект в коде позади страницы .aspx, как долго можно ожидать, что этот объект будет жить? Будет ли это жить через постбэк? Могу ли я передать это как-то на другую страницу? Могу ли я заставить его жить так же долго, как, скажем, сессионный объект?

Я искал в Интернете, надеясь найти документ, объясняющий жизненный цикл объектов, созданных из кода, и как взаимодействовать с этим жизненным циклом; Любые связанные ссылки будут оценены.

Кстати, я использую C # в коде позади, но я думаю, что большинство советов, касающихся VB, также были бы применимы.

Ответы [ 3 ]

5 голосов
/ 28 апреля 2011

Объект будет жить только столько времени, сколько страница, то есть в течение всего срока запроса страницы.Если вы хотите, чтобы он работал дольше, вы можете сохранить его в сеансе и получать его для каждого запроса.

5 голосов
/ 28 апреля 2011

Если я создам объект в коде позади страницы .aspx, как долго можно ожидать, что этот объект будет жить?Будет ли это жить через постбэк?Могу ли я передать это как-то на другую страницу?Можно ли заставить его работать так долго, как, скажем, объект сеанса?

Вы можете сохранять экземпляры объекта в сеансе:

Session["Foo"] = new MyFoo();

Вы можете получить экземпляр на любой странице.который имеет доступ к сеансу:

MyFoo foo = (MyFoo) Session["Foo"];

Альтернативой этому является использование переменной static - в этом случае переменная сохраняет свое значение до разрушения домена приложения (т.е. при перезапуске IIS) -но он также является глобальным в том смысле, что он имеет одинаковое значение для всех пользователей (поскольку он вообще не связан с сеансом).

3 голосов
/ 28 апреля 2011

Кодовый код действует в течение всего срока действия запроса.Это не будет жить через пост-защитников.Вы можете добавить значения в сессию, если вы хотите, чтобы через обратную передачу.То же самое относится и к VB.

...