У нас есть собственная реализация ведения журнала для NServiceBus, которая добавляет свойства в журналы; это делается путем сохранения его в объекте IDictionary, который управляется классом AsyncLocal.
Когда мы добавляем:
NServiceBus.Logging.LogManager.Use<OurCustomFactory>();
К услуге мы сталкиваемся с исключениями The given key was not present in the dictionary
, Object reference not set to an instance of an object
и Unable to cast object of type 'System.String' to type 'System.Object[]'
; это, я думаю, связано с тем, что разные потоки обращаются к нашему словарю и изменяют его.
Я нахожусь в конце кода; Я попытался обернуть его в замки, и это не сработало, я попытался поиграться с кодом async / await, чтобы не ожидать ничего ожидаемого; Я даже удалил часть кода, который добавляет свойства, но это все еще имеет эффект.
Есть идеи?