ASP Classic страница перестала работать - PullRequest
1 голос
/ 19 апреля 2010

У меня был набор устаревших страниц, запущенных на моем сервере IIS7, по крайней мере, год. Когда-то на прошлой неделе что-то изменилось, и теперь эта строка:

Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)

, который раньше возвращал ничего более захватывающего, чем строка: «Обновлено = истина» (входные параметры sproc обрабатывают, сохраняют их в таблице, проверяют на наличие ошибок и, когда все это делается, возвращают код успеха, выполняя этот оператор: выберите 'true' как [Обновлено]

Теперь мой обработчик ошибок на стороне страницы участвует и предлагает:

myError=Error from /logQuizScore.asp
Error source: Microsoft VBScript runtime error
Error number: 13
Error description: Type mismatch

Важно отметить, что на всех партиях используется одна и та же структура - один и тот же БД, одинаковый формат кодирования, строки подключения и (насколько я могу судить) все остальные.

Устраните неполадки до этого момента:

Вызов хранимой процедуры работает правильно (содержимое хранится в данной таблице). Вывод из хранимой процедуры работает правильно (я могу выполнить прямой вызов с заданными параметрами, и все работает. Я вижу вызов и передачу профилировщика. Я могу заменить весь код на «select» true как обновленный », и ошибка то же самое.

все до приведенного выше оператора response.write является правильным.

Так что-то изменилось, как ADO рендерит этот конкретный набор записей.

Итак, я пытаюсь: Response.Write myRS.Item.count

и получите:

Номер ошибки: 424 Описание ошибки: требуется объект

Кажется, объект набора записей не создается, а объект команды _did execute. Повторяю - множество других страниц с той же базовой логикой, чтобы без проблем поразить других звезд.

фрагмент полного кода

set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = MM_cnCompliance4_STRING
cmd1.CommandText = "dbo._usp_UserAnswers_INSERT"
...
cmd1.CommandType = 4
cmd1.CommandTimeout = 0
cmd1.Prepared = true
set myRS = cmd1.Execute

Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)

1 Ответ

0 голосов
/ 20 апреля 2010

Мне кажется, что sproc изменился и возвращает скаляр вместо набора результатов.

Изменение CommandType = 1 (adCmdText) необходимо, чтобы ваш запрос был изменен на SELECT 'whateveryouwannatry' AS [updated].

Поскольку вы указали, что в коде asp ничего не изменилось, мы можем исключить, что тип возврата вашей команды / sproc был изменен, указав выходной параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...