Ich habe einen Webservice mit einer Methode, die über ein xmlhttprequest Objekt in meinem Javascript aufgerufen wird. Die Methode akzeptiert einen Datetime-Parameter, der anschließend in eine Zeichenfolge konvertiert wird und für eine Berechnung in der Datenbank ausgeführt wird.Proper DateTime Format für einen Web Service
ich den Wert von m_txtDateAdd und das XMLHttpRequest abzuschicken
<asp:textbox id=m_txtDateAdd tabIndex=4 runat="server" Width="96px" Text="<%# Today %>">
</asp:textbox>
, die einen Validator es attacted hat
<asp:CustomValidator id="m_DateAddValidator" runat="server" ErrorMessage="Please Enter a Valid Date" ControlToValidate="m_txtDateAdd">●</asp:CustomValidator>
Mein Webmethod sieht so etwas wie dieses
[WebMethod]
public decimal GetTotalCost(DateTime transactionDate)
{
String sqlDateString = transactionDate.Year+"/"+transactionDate.Month+"/"+transactionDate.Day;
I benutze sqlDateString als Teil des commandtext, den ich an die Datenbank sende. Es ist eine Legacy-Anwendung und seine Inline-SQL, so dass ich nicht die Freiheit habe, eine gespeicherte Prozedur einzurichten und Parameter in meinem Code zu erstellen und zuzuweisen. Dies funktioniert 90% der Zeit. Der Webservice wird beim onchange-Event von m_txtDateAdd aufgerufen. Hin und wieder die Antwort, die ich vom Server bekomme, ist
System.ArgumentException: kann nicht konvertieren 25/06/2009 zu System.DateTime. System.ArgumentException: 25/06/2009 kann nicht in System.DateTime konvertiert werden.
Parametername: type ---> System.FormatException: String wurde nicht als gültige DateTime erkannt.
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()
Können Sie den benutzerdefinierten Validatorcode anzeigen? Der Serializer wird versuchen, Ihre Zeichenfolge mit Standardformatierung zu konvertieren, die nur ein paar grundlegende Formate verstehen kann. Der Validierer sollte sicherstellen, dass ein bekanntes Format übermittelt wird. –
Es ist ein standard asp.net benutzerdefinierter Validator. Ich habe keine eigene geschrieben – user48408