Я полностью зелёный, и это заставляет меня гаснуть - он работает для некоторых наборов данных, но не для других.Ошибка XML: значение было слишком большим или слишком маленьким для байта без знака
EDIT: похоже, что это связано с количеством записей - так или иначе, когда количество записей достигает определенной суммы - может быть, что-то вроде 250 - вот когда он сбой XML. Как-то кажется, что задействован первичный ключ с идентификатором автоматического увеличения, потому что я вижу, что когда я добавляю даже 3 записи, когда столбец идентификатора попал в 400, но все записи удалены, он все равно производит ту же ошибку, но когда я возвращаю идентификатор обратно к нулю - те же 3 записи могут быть добавлены и должным образом отформатированы в теле XML.
типы карт: Int32 -> Байт System.Int32 - путь> System.Byte Направление: FixtureDto.ExchangeType.ExchangeType.Id.Id Источник значение: 268
Значение было либо слишком велик или слишком мал для неподписанных байт.
Тип объекта ObjectContent`1 не смог сериализовать тело ответа для типа контента 'application/xml; кодировка = UTF-8' .
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace/>
<InnerException>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Mapping types: Int32 -> Byte System.Int32 -> System.Byte Destination path: FixtureDto.ExchangeType.ExchangeType.Id.Id Source value: 268
</ExceptionMessage>
<ExceptionType>AutoMapper.AutoMapperMappingException</ExceptionType>
<StackTrace>
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext() at WriteArrayOfFixtureDtoToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , CollectionDataContract) at System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, Boolean verifyKnownType, RuntimeTypeHandle declaredTypeHandle, Type declaredType) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiTypeAtTopLevel(DataContract dataContract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle originalDeclaredTypeHandle, Type graphType) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator writer, Object graph, DataContractResolver dataContractResolver) at System.Runtime.Serialization.DataContractSerializer.WriteObject(XmlWriter writer, Object graph) at System.Net.Http.Formatting.XmlMediaTypeFormatter.WriteToStream(Type type, Object value, Stream writeStream, HttpContent content) at System.Net.Http.Formatting.XmlMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.WebHost.HttpControllerHandler.<WriteBufferedResponseContentAsync>d__1b.MoveNext()
</StackTrace>
<InnerException>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Value was either too large or too small for an unsigned byte.
</ExceptionMessage>
<ExceptionType>System.OverflowException</ExceptionType>
<StackTrace>
at System.Convert.ToByte(Int32 value) at System.Int32.System.IConvertible.ToByte(IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.ComponentModel.BaseNumberConverter.ConvertTo(ITypeDescriptorContext context, CultureInfo culture, Object value, Type destinationType) at AutoMapper.Mappers.TypeConverterMapper.<>c__DisplayClass1_0.<GetConverter>b__0() at AutoMapper.Mappers.TypeConverterMapper.Map(ResolutionContext context, IMappingEngineRunner mapper) at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext context)
</StackTrace>
</InnerException>
</InnerException>
</Error>
Я думаю, что решил. Имел int для поля ID, но имел его в качестве байта в поле для отображения Dto. – user6063812
OK good.hope либо вы можете поместить его как 'answer' или' delete' этот пост. – Sampath
Пока я надеюсь, что это действительно решило проблему раз и навсегда - это уже третий раз, когда я опубликовал и придумал «решение» этой проблемы в одном обличье, иначе вы простите меня, если я возьму немного прежде чем спешить, чтобы завершить успех, прежде чем правильно тестировать его в течение удовлетворительного периода времени. – user6063812