SignalR не может подключиться к удаленному серверу - PullRequest
0 голосов
/ 27 января 2020

У меня есть проект SignalR в winform. Когда я запускаю сервер, приложение запускает сервер по указанному мною адресу. Например: «http: // localhost: 4951» В клиенте я указываю IP-адрес моего компьютера как «http: //192.169.1.101:8080/signalr». Однако клиент не может подключиться к удаленному компьютеру, на котором запущено приложение сервера, и он ловит исключение 400 (недопустимый запрос). Если я запускаю клиентское приложение локально, где работает сервер, все в порядке. Запуск сервера Код клиента

Сервер

    try
        {
            _signalR = WebApp.Start<Startup>("http://localhost:4951/");

            writeToLog("Server started at:http://localhost:4951/");
        }
        catch (Exception exception)
        {
            MessageBox.Show(exception.Message + " " + exception.InnerException);
        }

Запуск

    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR("/signalr",new HubConfiguration
        {
            EnableJSONP = true,
            EnableJavaScriptProxies = false,
            EnableDetailedErrors = true
        });
    }

Клиент

    private async Task ConnectAsync()
    {
        _signalRConnection = new HubConnection("http://192.168.1.105:4951/signalr");
        _signalRConnection.StateChanged += _signalRConnection_StateChanged;

        _hubProxy = _signalRConnection.CreateHubProxy("CommunicationHub");

        _hubProxy.On<string, string>("AddMessage", (name, message) => writeToLog($"{name}:{message}"));

        btnConnect.Enabled = false;

        try
        {
            await _signalRConnection.Start();

            await _hubProxy.Invoke("RegisterClient", "T001");

            btnDisconnect.Enabled = true;
        }
        catch (Exception ex)
        {
            writeToLog($"Error:{ex.Message}");
            btnConnect.Enabled = true;
        }
    }
    private void _signalRConnection_StateChanged(StateChange obj)
    {
        if (obj.NewState == ConnectionState.Connected)
            writeToLog("Connected");
        else if (obj.NewState == ConnectionState.Disconnected)
            writeToLog("Disconnected");
    }

Исключение при попытке клиента подключиться к удаленному серверу

Disconnected
Error:StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, 
Content: System.Net.Http.StreamContent, Headers:
{
Connection: close
Date: Tue, 28 Jan 2020 05:52:24 GMT
Server: Microsoft-HTTPAPI/2.0
Content-Length: 334
Content-Type: text/html; charset=us-ascii
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...