Я бы спросил, должен ли ваш объект быть одиноким. Если он не должен быть однотонный, то не делайте его синглом и полагайтесь на свой контейнер, чтобы его построить. Проблема, с которой вы сталкиваетесь, заключается в том, что инъекция зависимостей зависит от инверсии управления, а синглеты обычно строят сами.
Многие контейнеры будут нести ответственность за жизненный цикл объектов, которые они создают. Если вы это сделаете, вы можете дать ему указание использовать только один экземпляр вашего объекта. Однако, если я правильно читаю ваш вопрос, вам действительно нужен новый экземпляр объекта с каждым запросом, так как состояние (услуга) отличается для каждого запроса.
Одним словом, используйте singleton как последнее средство, поскольку оно вызывает проблему, с которой вы столкнулись сейчас. Если вы привязаны к этому шаблону, подумайте о том, чтобы не вводить службу, а передавать ее как параметр. Если вы представите его в состояние, у вас возникнут проблемы параллелизма с несколькими одновременными запросами, требующими разных экземпляров службы.