2010-08-16 80 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」「」「」之類的東西上啓用語法高亮。

將來我會檢查,檢查並再次檢查以確保我的參數有效。

相關問題