7
votes

Format DateTime approprié pour un service Web

J'ai un service Web avec une méthode appelée via un objet XMLHTTTPRequest dans mon JavaScript. La méthode accepte un paramètre DateTime qui est ensuite converti en une chaîne et exécutez-le contre la base de données pour effectuer un calcul.

I Obtenir la valeur de M_TXTDATATEADD et envoyez le XMLHTTPQUEST P>

   at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
   at System.DateTime.Parse(String s, IFormatProvider provider)
   at System.Convert.ToDateTime(String value, IFormatProvider provider)
   at System.String.System.IConvertible.ToDateTime(IFormatProvider provider)
   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
   at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
   --- End of inner exception stack trace ---
   at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
   at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
   at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()


2 commentaires

Pouvez-vous montrer le code de validateur personnalisé? Le sérialiseur tentera de convertir votre chaîne à l'aide de la mise en forme par défaut qui ne peut comprendre que quelques formats de base. Le validateur doit s'assurer qu'un format connu est soumis.


C'est un validateur personnalisé standard ASP.NET. Je n'ai pas écrit mon propre


4 Réponses :


11
votes

Vous devez envoyer une date d'heure dans le bon format pour XML: 2009-07-10T12: 40Z. De http://fr.wikipedia.org/wiki/iso_8601 .


Aussi, pourquoi utilisez-vous HTTPequest? Pourquoi ne pas simplement utiliser Ajouter une référence de service?


4 commentaires

Il n'y a pas de "format correct pour xml", mais il existe un format correct pour le schéma XML. Prudent de ne pas confondre les deux. Si le consommateur du XML est un client JavaScript, le format de date ISO peut ne pas être utile.


Son service accepte DateTime. XML Serializer utilise toujours des formats XSD pour désérialiser et Serialize, à moins que ixmlSerializable ne soit implémenté, ce qui n'est pas sur DateTime.


Une chose importante à rappeler que j'ai dit que les données sont renvoyées de manière successive de 90% + du temps. La modification répétée de la date cédera éventuellement l'exception, mais il n'y a pas de cohérence en ce sens que la saisie du 01/07/2009 sur et plus finira par faire échouer. Utilisation de XMLHTTPQUEST pour que vous n'obtenez pas une actualisation complète de la page


J'ai dit au lieu d'utiliser une référence de script, mais d'accord. BTW, si c'est la trace de la pile que vous obtenez, vous devez découvrir où dans la chaîne entre le client et le service que quelqu'un vissait avec vos messages. Le format ne change pas seul.



0
votes

Comment créez-vous la dateTime pour passer à GetTotalCost ()?

Avez-vous la surcharge constructrice correcte de http://msdn.microsoft.com/en-us/library/system.datetime.aspx ?


0 commentaires

0
votes

Passez-vous la valeur de la chaîne dans la zone de texte directement sur le site Web? Il serait plus fiable d'analyser la chaîne d'entrée de l'utilisateur dans un objet de date JavaScript, transmettez l'objet de la date au Webservice et laissez le sérialisateur dans la bibliothèque AJAX de Microsoft, calculez comment le formater.

Il peut être utile de voir le code JavaScript côté client qui obtient la valeur et appelant le service Web.


0 commentaires

5
votes

2001-10-26T19: 32: 52Z

Utilisez ce format.


0 commentaires