Je suis complètement nouveau dans les bibliothèques autofac et singalR, alors soyez gentil avec moi! J'ai le code suivant dans bootstrapper qui fonctionne seul sans signalR. Le code ci-dessus fonctionne très bien, mais après l'enregistrement de mon Hub avec ce code ci-dessous, cela ne fonctionne tout simplement pas.Autofac + SignalR
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);
J'utilise résolveur de dépendance SignalR se liant à Autofac de ce (https://github.com/pszmyd/SignalR.Autofac).
J'ai un simple hub comme celui-ci,
public class Chat : Hub
{
private readonly IadminService adminService;
public Chat(IadminService adminService)
{
this.adminService = adminService;
}
public void Send(string message)
{
Clients.addMessage(message);
}
}
C'est l'erreur que j'ai quand j'ai essayé d'utiliser DI au hub.
"Aucune étendue avec une balise correspondant" httpRequest "n'est visible à partir de la portée dans laquelle l'instance a été demandée."
Peu importe ce que je fais, je n'arrive pas à le faire fonctionner et je serais reconnaissant si quelqu'un pouvait me dire ce qui ne va pas avec le code ci-dessus.
Merci beaucoup Leo
Btw - quelle version de SignalR utilisez-vous? Je vais regarder votre code dans les détails demain, mais je suis presque sûr que quelque chose ne va pas ici. S'il vous plaît corriger le code collé - dernière ligne dans la première case semble orphelin :) –
Merci pour la réponse. J'utilise SignalR version 0.5.3 et si je change InstancePerHttpRequest en InstancePerLifetimeScope, cela fonctionne correctement, je ne peux plus ajouter un nouvel enregistrement à la base de données (en utilisant EF comme couche de données). Toute aide serait grandement appréciée, merci! – Leo