Autofac에서 작동하는 SignalR을 얻으려고합니다.IHubContext의 자동 주입 SignalR MVC
https://github.com/justsayno/signalr-autofac
이가 적용되는 GlobalHost
사용하여 작동 : 내가 여기서 무엇을했는지 나는의 다시 제거 버전의 환매 특약을 잘 사용하여 작동
https://github.com/sstorie/experiments/tree/master/angular2-signalr
했나 GlobalHost 목적. SignalF 서비스를 주입하는 방법에 대한 Autofac의 사이트에있는 문서를 따르려고했으나 제대로 작동하지 않습니다. 이것은 나의 종속 등록 내 설정 파일입니다
public static IContainer RegisterDependencies()
{
// Create your builder.
var builder = new ContainerBuilder();
//register controllers in DI
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
// Register SignalR hubs
builder.RegisterHubs(Assembly.GetExecutingAssembly());
return builder.Build();
}
을 그리고 startup.cs에서이 전화 :
public class Startup
{
public static IContainer Container { get; set; }
public void Configuration(IAppBuilder app)
{
var config = GlobalConfiguration.Configuration;
// configure IoC container
Container = AutofacConfiguration.RegisterDependencies();
//set dependency resolver from WebAPI and MVC
config.DependencyResolver = new AutofacWebApiDependencyResolver(Container);
DependencyResolver.SetResolver(new Autofac.Integration.Mvc.AutofacDependencyResolver(Container));
//register Autofac Middleware
app.UseAutofacMiddleware(Container);
app.Map("/signalr", a =>
{
a.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
Resolver = new Autofac.Integration.SignalR.AutofacDependencyResolver(Container)
};
a.RunSignalR(hubConfiguration);
});
// This server will be accessed by clients from other domains, so
// we open up CORS
//
app.UseCors(CorsOptions.AllowAll);
// Build up the WebAPI middleware
//
var httpConfig = new HttpConfiguration();
httpConfig.MapHttpAttributeRoutes();
app.UseWebApi(httpConfig);
}
}
그리고 나는 이것이 그 contstructor에 주입 한 컨트롤러가 있습니다
public TaskController(IHubContext hubContext)
{
// Commented out hard coded global host version
//
//_context = GlobalHost.ConnectionManager.GetHubContext<EventHub>();
// using DI
_context = hubContext;
}
을
이것은 그러나 나에게 기본 생성자가없는 컨트롤러에 대한 오류를 제공한다. (그래서 나는 이것이 내 IHubContext가 발견되지 않는 문제라고 생각한다).
도움이 될 것입니다. 나는 그것에 대해 이야기하는 완벽한 솔루션을 여기에서 찾을 수 있습니다하고 무엇을 REPO 만든 : 나는이 작업을 수행 할 수있었습니다
https://github.com/justsayno/signalr-autofac
감사합니다. Sam. 명명 된 속성을 허브 자체에 추가해야합니까? 아니면 클래스 이름을 사용합니까? – sethreidnz
등록 할 때 GetHubContext <>() 호출에서 사용한 클래스를 사용해야합니다. 내가 믿는 허브 자체에 아무 것도 추가 할 필요가 없습니다. –