ASP.NET 4.0 — сбой преобразования при преобразовании строки символов в уникальный идентификатор!

Я пытаюсь получить xml из небольшой функции на моей странице .cshtml. Это бросает мне ошибку. Однако это отлично работает в среде консоли/формы.

Он принимает 3 параметра и 1 исключение.

myDll.GetXML(year, username, uniqueidentifier, out ex);

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

Или стопка…

System.Data.SqlClient.SqlException (0x80131904): Conversion failed when converting from a character string to uniqueidentifier.

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()

   at System.Data.SqlClient.SqlDataReader.get_MetaData()

   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)

   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)

   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)

   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)

   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)

   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)

   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)

   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)

   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)

   at System.CapTool.Server.DAL.DAL.GetCapabilitiesXML(Int32 fiscalYear, String majComId, String userName, Exception& exception)

В моей функции GetXML она просто применяет параметры к процедуре хранения. Процедура хранения возвращает мне мой объект. Оттуда я могу делать все самое интересное в .cshtml.

Когда я вручную ввожу значения из SQL Management Studio, я действительно получаю правильный результат. Опять же, когда я создаю приложение Window Form, я тоже получаю правильный результат!

Когда дело доходит до страниц .cshtml или .aspx, я получаю сообщение об ошибке преобразования.

Я уже пробовал использовать параметр uniqueidentifier процедуры хранения, и он все равно выдавал мне эту ошибку.

Я ДУМАЮ… Это как-то связано с уникальными идентификаторами… но я не знаю, что делать…


person Erik5388    schedule 16.08.2010    source источник
comment
Было бы полезно, если бы вы разместили соответствующий код и/или данные.   -  person LukeH    schedule 17.08.2010
comment
Предоставьте код, который вызывает System.CapTool.Server.DAL.DAL.GetCapabilitiesXML (Int32 финансовый год, String majComId, String userName, Exception& exception)   -  person Tahbaza    schedule 17.08.2010


Ответы (2)


Каковы типы ваших параметров и как они преобразуются в SQL?

Запустите анализатор запросов и посмотрите, что на самом деле происходит в базе данных. Похоже, вы добавляете или исключаете "''", а SQL не может правильно преобразовать.

person Doobi    schedule 17.08.2010
comment
Вот так просто... Глупая ошибка, которую я проглядел... Если кто-то получит эту ошибку в будущем - просто ПРОВЕРЬТЕ, ПРОВЕРЬТЕ и ПРОВЕРЬТЕ еще раз, чтобы убедиться, что вы действительно передаете допустимый параметр. - person Erik5388; 18.08.2010

myDll.GetXML(year, username, uniqueidentifier, out ex);

Я работаю в среде "WebMatrix". Таким образом (на данный момент) не включение подсветки синтаксиса для таких вещей, как «дополнительные «»»»».

В будущем я буду проверять, проверять и еще раз проверять, чтобы убедиться, что мои параметры действительны.

person Erik5388    schedule 18.08.2010