У меня есть веб-сервис с методом, который вызывается через объект xmlhttprequest в моем javascript. Метод принимает параметр datetime, который впоследствии преобразуется в строку и запускается для базы данных, чтобы выполнить вычисление.
Я получаю значение из m_txtDateAdd и отправляю xmlHttprequest
<asp:textbox id=m_txtDateAdd tabIndex=4 runat="server" Width="96px" Text="<%# Today %>">
</asp:textbox>
, к которому прикреплен валидатор
<asp:CustomValidator id="m_DateAddValidator" runat="server" ErrorMessage="Please Enter a Valid Date" ControlToValidate="m_txtDateAdd">●</asp:CustomValidator>
Мой веб-метод выглядит примерно так
[WebMethod]
public decimal GetTotalCost(DateTime transactionDate)
{
String sqlDateString = transactionDate.Year+"/"+transactionDate.Month+"/"+transactionDate.Day;
Я использую sqlDateString как часть командного текста, который я отправляю в базу данных. Это унаследованное приложение и встроенный SQL, так что у меня нет свободы устанавливать хранимую процедуру, создавать и назначать параметры в моем коде. Это работает в 90% случаев. Веб-сервис вызывается при событии onchange m_txtDateAdd. Время от времени я получаю ответ от сервера
System.ArgumentException: невозможно преобразовать 25/06/2009 в System.DateTime.
System.ArgumentException: невозможно преобразовать 25/06/2009 в System.DateTime.
Имя параметра: тип ---> System.FormatException: строка не была распознана как допустимый DateTime.
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()