У меня есть проект 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
}