2010-08-16 60 views
0

我想从我的.cshtml页面中的一个小函数中检索xml。它给我一个错误。但是,这在控制台/表单环境中运行良好。ASP.NET 4.0 - 从字符串转换为uniqueidentifier时转换失败!

它需要3个参数和1个例外。

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

当我运行这个页面出现错误,“转换,从一个字符串转换为uniqueidentifier时失败了。”

或者一叠...

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参数,它仍然给我那个错误。

我想......它是与唯一标识符......但我不知道该怎么办......

+0

如果您发布了一些相关的代码和/或数据,这将有所帮助。 – LukeH 2010-08-16 23:17:58

+0

提供调用System.CapTool.Server.DAL.DAL.GetCapabilitiesXML(Int32 fiscalYear,String majComId,String userName,Exception&exception)的代码 – Tahbaza 2010-08-17 02:52:42

回答

2

什么类型的参数,以及它们是如何被转换为SQL?

运行查询分析器并查看数据库中实际发生了什么,听起来您可能正在添加或排除“”“,并且SQL无法正确转换。

+0

就这么简单...我忽略了愚蠢的错误... 如果有人得到将来会出现这个错误 - 只需再次检查,检查和检查以确保实际上传递了有效的参数。 – Erik5388 2010-08-18 06:43:39

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

我正在“WebMatrix”环境中工作。因此(现在)不在“extra”“”“”之类的东西上启用语法高亮。

将来我会检查,检查并再次检查以确保我的参数有效。

相关问题