私は autofac ライブラリと singalR ライブラリの両方にまったく慣れていないので、簡単に教えてください! ブートストラップには、signalR なしで単独で動作する次のコードがあります。
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces();
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>().InstancePerHttpRequest();
builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerHttpRequest();
builder.RegisterAssemblyTypes(typeof(adminRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces().InstancePerHttpRequest();
builder.RegisterAssemblyTypes(typeof(adminService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces().InstancePerHttpRequest();
builder.RegisterFilterProvider();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container));
上記のコードは問題なく動作しますが、以下のコードでハブを登録した後は動作しません。
builder.RegisterType<Chat>().InstancePerLifetimeScope();
builder.RegisterFilterProvider();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(container));
SignalR.IDependencyResolver resolver = new SignalR.Autofac.AutofacDependencyResolver(container);
GlobalHost.DependencyResolver = resolver;
RouteTable.Routes.MapHubs(resolver);
this (https://github.com/pszmyd/SignalR.Autofac) から Autofac にバインドする SignalR 依存関係リゾルバーを使用しています。
私はこのような単純なハブを持っています。
public class Chat : Hub
{
private readonly IadminService adminService;
public Chat(IadminService adminService)
{
this.adminService = adminService;
}
public void Send(string message)
{
Clients.addMessage(message);
}
}
これは、ハブに DI を使用しようとしたときに発生したエラーです。
「「httpRequest」に一致するタグを持つスコープは、インスタンスがリクエストされたスコープから見えません。」
私が何をしても、それを機能させることができないようです.誰かが上記のコードの何が問題なのか教えていただければ幸いです.
どうもありがとうレオ