Ho un servizio web con un metodo che viene chiamato tramite un oggetto xmlhttprequest nel mio javascript. Il metodo accetta un parametro datetime che viene successivamente convertito in una stringa ed eseguito contro il database per eseguire un calcolo.Formato DateTime corretto per un servizio Web
ottengo il valore da m_txtDateAdd e inviare il XMLHttpRequest
<asp:textbox id=m_txtDateAdd tabIndex=4 runat="server" Width="96px" Text="<%# Today %>">
</asp:textbox>
che ha un validatore attacted ad esso
<asp:CustomValidator id="m_DateAddValidator" runat="server" ErrorMessage="Please Enter a Valid Date" ControlToValidate="m_txtDateAdd">●</asp:CustomValidator>
mio webmethod simile a questa
[WebMethod]
public decimal GetTotalCost(DateTime transactionDate)
{
String sqlDateString = transactionDate.Year+"/"+transactionDate.Month+"/"+transactionDate.Day;
I usa sqlDateString come parte del comando che invio al database. È un'applicazione legacy e il suo sql in linea, quindi non ho la libertà di impostare una procedura memorizzata e creare e assegnare parametri nel mio codice. Questo funziona il 90% delle volte. Il servizio web viene chiamato sull'evento onchange di m_txtDateAdd. Ogni tanto la risposta che ottengo dal server è
System.ArgumentException: Impossibile convertire 25/06/2009 a System.DateTime. System.ArgumentException: Impossibile convertire 25/06/2009 in System.DateTime.
Nome parametro: tipo ---> System.FormatException: la stringa non è stata riconosciuta come DateTime valido.
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()
Puoi mostrare il codice del validatore personalizzato? Il serializzatore tenterà di convertire la stringa utilizzando la formattazione predefinita che può solo comprendere alcuni formati di base. Il validatore deve assicurarsi che venga inviato un formato noto. –
È un validatore personalizzato asp.net standard. Non ho scritto il mio proprio – user48408