Трансляция SignalR Server перестает работать при использовании DefaultDependencyResolver - PullRequest
0 голосов
/ 16 марта 2020

При запуске сервера 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, чтобы кто-нибудь помог мне определить, почему это не работает?

1 Ответ

0 голосов
/ 17 марта 2020

Нашел работающее решение, также необходимо установить / сбросить распознаватель по умолчанию в 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...