К сожалению, здесь не так много работы - здесь нет никакого реального вопроса, нет объяснения того, какие шаги были предприняты для решения проблемы, какие вопросы уже рассматривались и т. Д.
Я рекомендую ознакомиться с этим сообщением о том, что делает хороший вопрос SO. Это может помочь вам - проработав некоторые вопросы и помогая побольше взглянуть на вопрос;и это может помочь другим - сузить то, на что нужно смотреть, или точно понять, за что ты стреляешь.Каждый выигрывает с хорошо написанным вопросом, даже люди, которые могут видеть подобную проблему и ищут помощи.
Учитывая, что есть некоторые догадки, чтобы выяснить, что вы спрашиваете, я предполагаю, что вопрос что-то вродестроки:
У меня [какое-то приложение ASP.NET, скорее всего, веб-API] работает конвейер OWIN.У меня также есть фоновые задания, работающие через Hangfire.Я пытаюсь разделить контейнер между приложением ASP.NET и заданиями Hangfire, но вижу исключение [в какой-то момент, но неясно, когда].Почему может возникать это исключение?
Ну, во-первых, сообщение об исключении говорит вам многое:
Запрошенная служба Mach.CharterPad.Business.TripManager имеетне был зарегистрирован.
Рассматривая, как проходят ваши регистрации ...
builder.RegisterAssemblyTypes(businessasm)
.Where(t => t.Name.EndsWith("Manager"))
.AsImplementedInterfaces()
.InstancePerRequest();
Я сразу вижу две потенциальные проблемы:
- Вы использовали
AsImplementedInterfaces
, что означает, что если у вас есть public class TripManager : ITripManager
, то только будет зарегистрирован как ITripManager
.Вы не можете разрешить конкретный тип, если вы только зарегистрировали интерфейсы.Вам также нужно зарегистрировать AsSelf
. - Вы указали
InstancePerRequest
, а фоновые задачи не имеют запросов.Это не сработает.Вы должны были бы зарегистрироваться как InstancePerDependency
или InstancePerLifetimeScope
, если бы вы хотели новый в каждой фоновой задаче;или SingleInstance
, если вы хотите поделиться синглтоном между веб-приложением и фоновой задачей.
В MyController.cs
я не вижу, как разрешается TripManager
.Я не знаю, является ли это статической ссылкой на TripManager.GetById(id)
или это свойство.Там нет конструктора, поэтому вы не можете сказать, принимает ли он ITripManager
или TripManager
или что.
Однако проблемы с регистрацией там, скорее всего, дадут вам достаточно информации, чтобы начать устранение проблемы.В противном случае я мог бы рекомендовать открыть новый вопрос с более подробной информацией, чтобы люди могли лучше помочь вам.