使用DefaultDependencyResolver时,SignalR服务器广播停止工作



启动自主机SignalR服务器时,如果不使用HubConfiguration,我可以广播消息

例如,使用以下广播消息效果良好

// SelfHost 
public class SelfHostStartUp
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}

但在使用此时停止工作

// SelfHost
public class SelfHostStartUp
{
public void Configuration(IAppBuilder app)
{
var config = new HubConfiguration 
{ EnableJSONP = false, 
EnableDetailedErrors = true, 
Resolver = new DefaultDependencyResolver() 
};
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR(config);
}
}

服务器端事件(SignalRHub之外(:

private void button1_Click(object sender, EventArgs e)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRHub>();
hubContext.Clients.All.SendMessageTest("Hello");
}

客户端:

hubConnection = new HubConnection(ipAddressAndPort);
hubConnection.StateChanged += HubConnection_StateChanged;
hubConnection.TraceLevel = TraceLevels.All;
hubConnection.TraceWriter = new EventLogTraceWriter(eventLog1);
hubProxy = hubConnection.CreateHubProxy("SignalRHub");
hubProxy.On<string>("SendMessageTest", message =>
Debug.WriteLine($"{message}")
);

没有出现任何错误,服务器似乎在发送消息,但客户端没有收到任何消息。我需要能够设置HubConfiguration,所以有人能帮我确定为什么这不起作用吗?

找到一个有效的解决方案,GlobalHost中的默认解析器也需要设置/重置

以下任一项现在都工作正常

public class SelfHostStartUp
{
public void Configuration(IAppBuilder app)
{
var defaultDependencyResolver = new DefaultDependencyResolver();
GlobalHost.DependencyResolver = defaultDependencyResolver;
var config = new HubConfiguration { EnableJSONP = false, EnableDetailedErrors = true, Resolver = defaultDependencyResolver };
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR(config);
}
}

public class SelfHostStartUp
{
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver = new DefaultDependencyResolver();
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}

最新更新