[2024-11-25 09: 56: 28: 569] [ T: G-D] [PID: 6288] [TH: THEAD ID = 76] [lib: **********. P> Связанный код: < /p>
Код: Выделить всё
_logger.LogDebug("Record {0} management completed", _info.recordName);
corpluction также происходит на фиксированных строках, as: < /p>
Код: Выделить всё
_logger.LogDebug("Program completed");
< /code>
Когда возникает проблема, почти все следующие зарегистрированные строки повреждены (также из разных потоков). Через некоторое время (даже часы) исключено: < /p>
Произошла ошибка во время записи в Logger (ы). (Входная строка не была в правильном формате.)
Входная строка не была в правильном формате.
[2024-11-25 09: 56: 28: 582] [T: CE-M] [PID: 6288] [TH: идентификатор потока = 76]. (Входная строка не была в правильном формате.)
at microsoft.extensions.logging.logger.throwloggingError (список1 exceptions) at Microsoft.Extensions.Logging.Logger.Log[TState](LogLevel logLevel, EventId eventId, TState state, Exception exception, Func< /code> 3 Formatter)
at microsoft.extensions.logging.loggerextensions.log (ilogger logger, loglevel loglevel, eventId EventId, исключение исключения, строковое сообщение, объект [] args)
at ******* • в правильном формате.
at System.text.valuestringBuilder.ThrowFormaterRor ()
at system.text.valuestringbuilder.appendformathelper (поставщик iformatprovider, строковый формат, paramsarray args)
at system.string.formathelper (paramsarray args) Поставщик iformatprovider, формат строки, параметры Args)
at System.String.format (поставщик iformatProvider, строковый формат, объект [] args)
at microsoft.extensions.logging.logvaluesformatter.format (object [] values)
at nlog.extensions.logging.nloglogger.createlogeventinfo [tstate] (loglevel Nlogloglevel, EventId EventId, государство TSTATE, исключение исключения, Func3 formatter) at NLog.Extensions.Logging.NLogLogger.Log[TState](LogLevel logLevel, EventId eventId, TState state, Exception exception, Func< /code> 3 Formatter)
at microsoft.extensions.logging.logger.g__loggerlog | 14_0 [tstate] (loglevel loglevel, eventid eventid, ilogger logger, исключение исключения, func3 formatter, ListНаверняка формат шаблона правильный в коде, и тот же журнал использовался много раз раньше Исключение. В приложении нет явного небезопасного кода (по крайней мере, в моих модулях). Единственное сомнение в некоторых касках с использованием следующего кода: < /p>
Код: Выделить всё
public static T CastTo(this byte[] bytes) where T : struct
{
ArgumentNullException.ThrowIfNull(bytes);
if (bytes.Length != Marshal.SizeOf())
throw new ArgumentException($"{nameof(bytes)}.{nameof(bytes.Length)} != {nameof(Marshal)}.{nameof(Marshal.SizeOf)}()");
GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
try
{
return Marshal.PtrToStructure(handle.AddrOfPinnedObject());
}
finally
{
handle.Free();
}
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct SetProgramRecoverabilityStatusRequest
{
public long programId;
public uint counter;
public uint status;
}
// Usage
byte[] data;
SetProgramRecoverabilityStatusRequest requestData;
//... data is set here
requestData = CastTo(data);
Есть ли у вас есть идеи Где проблема могла бы родиться и как это отладить/исправить?
Большое спасибо.
Подробнее здесь: https://stackoverflow.com/questions/794 ... ed-strings
Мобильная версия