2010-04-21 4 views
3

Мы получаем сообщение об ошибке сервера: «Счетчик параметров не совпадает со значением параметра». Кто-нибудь может понять, что это может означать?Счетчик параметров не соответствует Параметр Значение счет

Наш сайт находится на веб-сайтах ASP.NET, работающих с DotNetNuke как CMS.

Я попытался загрузить более старую версию файла web.config, но она, похоже, не изменилась с момента появления ошибки. Это не было ни в одном из наших последних загрузок модулей, потому что я перезагрузил старые файлы с утра, которые мы изменили.

Не могли бы ли какие-либо изменения в базе данных вызвать это или возникнуть из-за ошибки в коде?

Спасибо.

ответ

5

В некотором SQL-запросе или хранимой процедуре задано больше параметров, а затем получены значения параметров.

Что-то вроде этого:

command.CommandText = "EXEC test @a"; 
command.Parameters.Add("@a", "a"); 
command.Parameters.Add("@b", "b"); 

т.е. посмотреть на схему базы данных. Было ли это изменено? Были ли изменены хранимые процедуры?

+0

Есть ли способ узнать, какая хранимая процедура была? – Matt

+0

@Matt: перейдите в 'DotNetNuke.Data.SqlDataProvider.GetPortals (string)' и узнайте, какой SP там вызывается – abatishchev

+1

Найденный, получается хранимый proc GetPortals был изменен каким-то образом ... kinda scary для живого сайта , Спасибо за помощь! – Matt

4

Я обнаружил, что если вы используете параметры, которые имеют значения по умолчанию, некоторые библиотеки не могут обрабатывать.

Например, у нас есть приложение, в котором используется более ранняя версия метода доступа к данным Microsoft Enterprise Library, позволяющая передавать параметры в виде массива.

Не удается, если количество элементов в массиве не соответствует точно количеству параметров хранимой процедуры, независимо от того, являются ли они «необязательными» или нет.

В подобных случаях нужно использовать прямой ADO.NET и использовать синтаксис cmd.Parameters.AddWithValues("@parameterName", value)

для требуемых параметров хранимой процедуры. При использовании этого метода вам не придется добавлять параметры команды для параметров «необязательной» хранимой процедуры.

+0

+1 для обеспечения решения, отличного от очевидного –

0

У меня была такая же проблема, и я обнаружил, что она собирала поля из временного кеша, который поддерживался MySQLHelper.

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