iis7, классический жерех; ошибка несоответствия типов - PullRequest
0 голосов
/ 31 декабря 2011

Я установил локальный сервер в Windows 7 с IIS 7 для классического сайта ASP VBS, над которым я работаю.

Страница выдает ошибку «несоответствие типов».Этого не происходит с исходным сервером (Windows 2008, IIS 7)

связанный код:

if myRS("age") = 10 then
  • Значением поля является пустая строка, проверяемая отладчиком,также в сообщении об ошибке указывается «строка»
  • Файл ASP, база данных и данные являются точными копиями рабочего сайта
  • Ошибка не возобновляется как на общедоступных, так и на локальных сайтах.
  • Рабочий сервер - это веб-издание MS-SQL 2008 R2, локальный - Express Edition.

Теперь я знаю, что код написан ужасно.Но как локальный сервер может выдать такую ​​ошибку, а публичный - нет?Я думаю, что сравнения сделаны через тип варианта, поэтому подтипы должны автоматически оцениваться без ошибок?

Ответы [ 4 ]

3 голосов
/ 31 декабря 2011

Скорее всего, это вызвано проблемой "..intrinsic properties ..". Я предполагаю, что ваш рабочий сервер уже был «исправлен», чтобы разрешить его, и на вашем локальном сервере никогда не возникало необходимости «..фиксировать» это.

Вы можете прочитать больше здесь:

http://blogs.msdn.com/b/distributedservices/archive/2010/04/28/iis-intrinsic-properties-are-disabled-by-default-on-windows-2008-and-windows-2008-r2.aspx

Вы использовали CreateObject для создания своих наборов записей / ado объектов, и на это повлияла эта проблема, из-за которой Microsoft отключила их по умолчанию из готовых конфигураций.

Подробнее читайте здесь:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;287422

Хотя .. если вы просто хотите, чтобы это работало, тогда вы можете прочитать первую ссылку.

0 голосов
/ 06 января 2012

Похоже, проблема с набором записей ADO. Попробуйте вывести значение myRS ("age") и, если оно ничего не выдаст или выдает ошибки, попробуйте изменить драйвер sql в строке подключения или, возможно, даже использовать CStr (myRS ("age")) = CStr (10).

0 голосов
/ 05 января 2012

Я не знал о конфигурации сервера, которую вы можете сделать, чтобы исправить это, что упомянул Nonym. Мое предложение состояло бы в том, чтобы просто обновить код, чтобы явно вызывать желаемое свойство вместо того, чтобы позволить его выводить; например.,

Изменить это:

if myRS("age") = 10 then

В это:

if myRS("age").Value = 10 then

Это также может иметь и другие преимущества, если я правильно помню, хотя на данный момент не приходит в голову конкретных примеров, почему. Желаем удачи!

0 голосов
/ 31 декабря 2011

Это могут быть разные источники данных или драйверы, так что данные, которые выглядят одинаково, немного отличаются.

Например, пустая строка, пустая строка или ноль.

Попробуйте переписать, чтобы записать значение myRS ("age").

...