2014-09-11 3 views
-2

Im работает над некоторыми классическими функциями ASP.Классический ASP - приложение останавливается с данными сеанса

В одном файле wsc, который устанавливает сеанс так.

Session("ordertype") = "morning" 

Тогда в другом wsc-файле я проверяю, существует ли это так.

If Session("ordertype") Is Nothing Then 
    ' Do stuff here 
End if 

Но каждый раз, когда выясняется, существует ли сессия, приложение просто останавливается.

Может ли кто-нибудь увидеть, что я делаю неправильно?

Любая помощь была бы принята с благодарностью.

+0

Любые изменения, если вы используете 'Session.Contents (" ordertype ")'? – SearchAndResQ

+1

'if len (Session (" ordertype "))> 0 then'. Я никогда не использовал «Nothing» в этом случае, не уверен, что есть ваша ошибка. – MarceloBarbosa

+1

@MarceloBarbosa Вы бы этого не сделали, потому что это «строка», но если бы она содержала ссылку на объект, это было бы. – Lankymart

ответ

2

Оператор Is действителен, но не в контексте, который вы пытаетесь использовать.

От VBScript Reference

сравнивает два опорных объекта переменных.

result = object1 Is object2 

Если вы где установив ссылку на объект с помощью команды Set затем, используя этот вид сравнения был бы приемлем.

В этом случае, хотя ваш Session("ordertype") содержит строку, которая не является ссылочным типом объекта, вместо этого используйте простой код Len(), чтобы проверить, назначена ли вам строка или нет. Чтобы избежать Nulls использовать

'Check Length of Session value avoid Null by concatenating empty string. 
If Len(Session("ordertype") & "") > 0 Then 
    'Do Stuff here 
End If 

Альтернативный метод

Вы также можете использовать VarType(Session("ordertype")), чтобы проверить переменную Session тип первой, чтобы избежать NULLS, как @ZeeTee предлагает.

+0

Обновлен мой ответ, теперь ваш ответ неправильный. –

+0

@ZeeTee Как мой ответ не так? – Lankymart

+0

@ZeeTee Где этот объект db? 'Сессия (« ordertype ») =« утро ».« Мой друг - это «строка» больше. – Lankymart

Смежные вопросы