C# 信号器2 Autofac在请求中呼叫集线器两到三次

C# 信号器2 Autofac在请求中呼叫集线器两到三次,c#,signalr,autofac,C#,Signalr,Autofac,你必须原谅这个奇怪的标题,但是在看了几个小时同一期之后,这是我能想到的最好的了 我最初将signalr嵌入到我的MVC项目中,但将其转移到一个自托管的OWIN应用程序中 当调用集线器时,在初始加载时,它将加载集线器两次,随后的调用将加载集线器三次 这是我的hub,我按照文档进行了测试: public class TestHub : Hub { private readonly ILifetimeScope _scope; private ITestService _testSer

你必须原谅这个奇怪的标题,但是在看了几个小时同一期之后,这是我能想到的最好的了

我最初将signalr嵌入到我的MVC项目中,但将其转移到一个自托管的OWIN应用程序中

当调用集线器时,在初始加载时,它将加载集线器两次,随后的调用将加载集线器三次

这是我的hub,我按照文档进行了测试:

public class TestHub : Hub
{
    private readonly ILifetimeScope _scope;
    private ITestService _testService;

    public TestHub(ILifetimeScope scope)
    {
        _scope = scope.BeginLifetimeScope();
        _testService = _scope.Resolve<ITestService>();
    }

    public void SignalRTest()
    {
        var types = _testService.SomeMethod();
        Clients.Caller.populateSignalRTest(types);
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing && _scope != null)
        {
            _scope.Dispose();
        }
        base.Dispose (disposing);
    }
}
有没有人遇到过这种情况,或者知道为什么会发生这种情况


谢谢

一位同事做了一些调试,而我愤怒地做了其他事情,发现这是一项服务,而不是AutoFac或Signal。我们有一个索引,服务的构造函数方法正在验证该索引是否有效。把它取下来就好了

var listener = (HttpListener)appBuilder.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;
appBuilder.UseCors(CorsOptions.AllowAll);
var builder = new ContainerBuilder();
// ... Other modules being imported ...
builder.RegisterModule<NLogModule>();
builder.RegisterType<TestService> ().As<ITestService> ();
builder.RegisterHubs(Assembly.GetExecutingAssembly());
var config = new HubConfiguration();
var container = builder.Build();
config.Resolver = new AutofacDependencyResolver(container);
config.EnableDetailedErrors = true;
appBuilder.UseAutofacMiddleware(container);
appBuilder.MapSignalR("/signalr", config);
SignalR 2.1.2 (Also tried 2.2.0)
AutoFac 3.5.2