У меня такая же ситуация, как и у вас, и я решаю ее следующим образом.
Общее правило, которое я использую, это то, что когда-либо имеет global.asax или что-то подобное, ему нужно выполнить код, который регистрирует IoCкомпоненты.Другими словами, вам нужно запустить его по одному для каждого другого процесса, который выполняется (т. Е. Веб-сайт находится в одном процессе, а служба - в другом).
В моем случае я делаю это один раз длявеб-сайт MVC global.asax и снова для сервера.В этом случае регистрация будет отличаться для службы и веб-сайта.
Кроме того, я делаю еще одну вещь.В связи с тем, что я повторно использую компоненты между приложением mvc и службой (то есть ведение журнала), у меня есть третий основной компонент, который регистрирует основные компоненты IoC для системы, и этот компонент вызывается при регистрации как на веб-сайте, так и в службах.Следовательно, все, что является общим для службы и веб-сайта, входит в базовую регистрацию, а затем все, что отличается, входит в специфическую регистрацию «интерфейса».
Надеюсь, что это поможет.