2010-08-16 5 views
0

J'essaie de récupérer xml d'une petite fonction dans ma page .cshtml. C'est en me jetant une erreur. Cependant, cela fonctionne bien dans un environnement console/formulaire.ASP.NET 4.0 - La conversion a échoué lors de la conversion d'une chaîne de caractères en identifiant unique!

Il prend 3 paramètres et 1 exception.

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

Quand je lance cette page je reçois l'erreur, « Échec de la conversion d'une chaîne de caractères à uniqueIdentifier. »

ou une pile de ...

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) 

Dans ma fonction GetXML il applique simplement les paramètres à une procédure de magasin. La procédure de magasin me renvoie mon objet. De là, je peux faire toutes les choses amusantes dans .cshtml.

Lorsque je saisis manuellement les valeurs à partir de SQL Management Studio, j'obtiens en fait le bon résultat. Encore une fois, lorsque je crée une application Window Form - je reçois aussi le bon résultat!

En ce qui concerne les pages .cshtml ou .aspx, la conversion a échoué.

J'ai déjà essayé de lancer le paramètre uniqueidentifier de procédure de stockage et il m'a quand même donné cette erreur.

Je pense ... Il a quelque chose à voir avec des identifiants uniques ... mais je ne sais pas quoi faire ...

+0

Il serait utile si vous avez publié du code et/ou des données pertinentes. – LukeH

+0

Fournissez le code qui appelle System.CapTool.Server.DAL.DAL.GetCapabilitiesXML (Int32 fiscalYear, Chaîne majComId, Chaîne nom_utilisateur, Exception et exception) – Tahbaza

Répondre

2

Quels sont les types de ses paramètres et sont-ils convertis en SQL?

Exécutez l'analyseur de requête et voyez ce qui se passe réellement dans la base de données, il semble que vous puissiez ajouter ou exclure "" et que le SQL ne puisse pas être converti correctement.

+0

Aussi simple que cela ... Erreur stupide que j'ai ignorée ... Si quelqu'un obtient cette erreur dans le futur - juste CHECK, CHECK, et CHECK encore pour s'assurer que vous passez en fait un paramètre valide. – Erik5388

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

Je travaille dans un environnement "WebMatrix". Ainsi (pour l'instant) ne permettant pas la coloration syntaxique sur des choses comme "extra" "" "".

À l'avenir, je vais vérifier, vérifier et vérifier à nouveau pour m'assurer que mes paramètres sont valides.

Questions connexes