Возникла исключительная ситуация statuscode 404 signalr.client.httpclientexception при прохождении через hubConnection.Start (). Wait () - PullRequest
0 голосов
/ 23 июня 2019

Мы не можем подключиться к концентратору signalR, развернутому на сервере (Windows Server 2008 Enterprise SP2 и IIS 6) через консольное приложение, мы протестировали все локально на ПК, и оно работало нормально, но развернуто на сервере (IIS6) мы не смогли подключиться удаленно или даже локально на самом сервере.

Нет опыта работы с SignalR, но тот же клиент работает нормально на обычном ПК.(клиент и концентратор в одном компьютере).Мы проверили подключение и разрешения на сервер, и все в порядке.Мы можем достичь URL-адреса хаба (http://hr1/HRNotificationHub), когда вызываем его удаленно через веб-браузер, но при добавлении сигнальных / хабов в браузере также появляется ошибка 404.

static void Main(строка [] args) // Клиент {try {IHubProxy _hub;

                string url = @"http://localhost/HRNotificationHub/";

                var connection = new HubConnection(url);
                _hub = connection.CreateHubProxy("HRHub");
                connection.Start().Wait();

                _hub.On("ReceiveMessage", x => Console.WriteLine(x));

                string line = null;
                while ((line = System.Console.ReadLine()) != null)
                {
                    _hub.Invoke("BroadcastMessageToAll", line).Wait();
                }

                Console.Read();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.InnerException.ToString());
                Console.Read();

            }
        }


    public class Startup //Server
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);

            var hubConfiguration = new HubConfiguration()
            {
                EnableDetailedErrors = true,
                EnableJSONP = true,
                EnableJavaScriptProxies = true
            };

            app.MapSignalR(hubConfiguration);
        }
    }


    [HubName("HRHub")]
    public class HRHub : Hub //Hub Class
    {
        public void BroadcastMessageToAll(string message)
        {
            Clients.All.newMessageReceived(message);

            var newMessage = message + "-newmessage";
            Clients.All.ReceiveMessage(newMessage);
        }

        public void JoinAGroup(string group)
        {
            Groups.Add(Context.ConnectionId, group);
        }

        public void RemoveFromAGroup(string group)
        {
            Groups.Remove(Context.ConnectionId, group);
        }

        public void BroadcastToGroup(string message, string group)
        {
            Clients.Group(group).newMessageReceived(message);
        }
    }

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Все, что я сделал для решения этой проблемы, это добавление строки в webconfig проекта, развернутого на сервере:

<modules runAllManagedModulesForAllRequests="true" />
0 голосов
/ 24 июня 2019

Локально, это работает в IIS Express, что нормально.

На сервере вы используете IIS 6, который не поддерживается. Пожалуйста, проверьте документацию . Вам нужен как минимум IIS 7, но IIS 8, если вы планируете использовать веб-сокеты.

...