У нас есть очень странная ошибка, которая иногда возникает, когда мы хотим сохранить что-то из нашей службы WCF. Сохраняемый нами объект не содержит недопустимых значений datetime, мы все проверяем их перед сохранением. Когда мы видим эту ошибку, база данных иногда зависает, и WCF находится в неисправном состоянии. Когда я перезагружаю БД и веб-приложение IIS, где размещается WCF, и пытаюсь сохранить снова. Оно работает..
Мы невежественны, поэтому, если у кого-то есть какой-либо совет, пожалуйста, поделитесь
Ниже приведена ошибка:
2010-03-05 10: 21: 34,311 [5] ОШИБКА ProjectX.Business.TTExceptionLogger - Исключение где-то в ReceiveResultsForMobile (): {0}
Castle.Services.Transaction.CommitResourceException: не удалось зафиксировать транзакцию, один (или несколько) ресурсов не удалось ---> System.Data.SqlTypes.SqlTypeException: переполнение SqlDateTime. Должно быть между 01.01.1753 12:00:00 и 31.129999 11:59:59 вечера.
в System.Data.SqlTypes.SqlDateTime.FromTimeSpan (значение TimeSpan)
в System.Data.SqlTypes.SqlDateTime.FromDateTime (значение DateTime)
в System.Data.SqlClient.MetaType.FromDateTime (DateTime dateTime, Byte cb)
в System.Data.SqlClient.TdsParser.WriteValue (значение объекта, тип мета-типа, масштаб в байтах, значение типа Int32, длина-шифрование Int32, значение-кодировка Int32, смещение Int32, TdsParserStateObject stateObj)
в System.Data.SqlClient.TdsParser.TdsExecuteRPC (_SqlRPC [] rpcArray, тайм-аут Int32, логический inSchema, запрос SqlNotificationRequestRequest, TdsParserStateObject stateObj, логический isCommandProc)
в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, логический асинхронный)
в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, RunBehavior runBehavior, логический returnStream, метод String, результат DbAsyncResult)
в System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (результат DbAsyncResult, String methodName, логическое sendToPipe)
в System.Data.SqlClient.SqlCommand.ExecuteNonQuery ()
в NHibernate.AdoNet.AbstractBatcher.ExecuteNonQuery (IDbCommand cmd)
в NHibernate.AdoNet.NonBatchingBatcher.AddToBatch (ожидание IExpectation)
в NHibernate.Persister.Entity.AbstractEntityPersister.Update (идентификатор объекта, поля объекта [], объект [] oldFields, объект rowId, логический [] includeProperty, Int32 j, объект oldVersion, объектный объект, SqlCommandInfo sql, сеанс ISessionImplementor)
в NHibernate.
в NHibernate.Persister.Entity.AbstractEntityPersister.Update (идентификатор объекта, поля объекта [], Int32 [] dirtyFields, логическое значение hasDirtyCollection, объект [] oldFields, объект oldVersion, объектный объект, объектный идентификатор строки, сеанс ISessionImplementor)
в NHibernate.Action.EntityUpdateAction.Execute ()
в NHibernate.Engine.ActionQueue.Execute (исполняемый файл IExecutable)
в NHibernate.Engine.ActionQueue.ExecuteActions (список IList)
в NHibernate.Engine.ActionQueue.ExecuteActions ()
в NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions (сеанс IEventSource)
в NHibernate.Event.Default.DefaultFlushEventListener.OnFlush (событие FlushEvent)
в NHibernate.Impl.SessionImpl.Flush ()
в NHibernate.Transaction.AdoTransaction.Commit ()
в Rhino.Commons.NHibernateTransactionAdapter.Commit ()
в Rhino.Commons.Facilities.RhinoTransactionResourceAdapter.Commit ()
в Castle.Services.Transaction.AbstractTransaction.Commit ()
--- Конец внутренней трассировки стека исключений ---
в Castle.Services.Transaction.AbstractTransaction.Commit ()
в Castle.Services.Transaction.StandardTransaction.Commit ()
в Castle.Facilities.AutomaticTransactionManagement.TransactionInterceptor.Intercept (вызов IInvocation)
в Castle.DynamicProxy.AbstractInvocation.Proceed ()в IReceiveServiceProxy61c28a82c9a24e96957e32292b924889.Save (получение экземпляра) в WcfInterfaceService.MobileServices.SaveReceiveLines (IEnumerable 1 receiveLines, String warehouseCode, String username, String deviceNumber, Boolean removeOldReceiveLines) in D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 567
at WcfInterfaceService.MobileServices.ProcessReceiveResults(List
1 receiveLines, строка StringCode, имя пользователя String, String deviceNumber \ клиент \ Project \ X.X.\ MobileServices.svc.cs: строка 770 в WcfInterfaceService.MobileServices.ProcessResultsFromMobile (String receiveResult, String warehouseCode, String username, String deviceNumber) в D: \ Документы проекта \ Клиенты \ ClientX 09.08 \ Projects \ ProjectX \ ProjectX.Werf.Service.ServiceSer.svc.cs: строка 668