Я использую autofac на моем текущем проект Asp и все работает отлично, пока я не решил использовать инъекции зависимостей в signalR Hubautofac с signalr не конструктор без параметров определяются для этого объекта
вот мой класс запуска
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerLifetimeScope();
builder.RegisterType<DbFactory>().As<IDbFactory>().InstancePerLifetimeScope();
//builder.RegisterHubs(Assembly.GetExecutingAssembly());
builder.RegisterType<DiscussionHub>();
// Repositories
builder.RegisterAssemblyTypes(typeof(LanguagesRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces().InstancePerRequest();
// Services
builder.RegisterAssemblyTypes(typeof(LanguageService).Assembly)
.Where(t => t.Name.EndsWith("Service"))
.AsImplementedInterfaces().InstancePerRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
var config = new HubConfiguration
{
Resolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(container)
};
app.UseAutofacMiddleware(container);
AutoMapperConfiguration.Configure();
app.MapSignalR("/signalr",config);
}
}
и вот мой концентратор
public class DiscussionHub : Hub
{
private readonly IDiscussionService _discussionService;
public DiscussionHub(IDiscussionService discussionService)
{
_discussionService = discussionService;
}}
ошибка в том, что я не получаю не конструктор без параметров на мой хаб? любое предложение ?!
Где вы регистрируете свой 'IDiscussionService' с помощью построителя контейнеров? – nemesv
Я обновил свой код, вы можете его проверить –
Попробуйте просто решить: IDiscussionService после создания вашего контейнера. Возможно, вы захотите зарегистрировать службу для IDiscussionService при вызове: RegisterAssemblyTypes, но проблема может быть там. –