SignalR Удаленное подключение к RemoteDesktop

Простая ситуация. Как подключиться к серверному приложению SignalR, которое находится на моем сервере удаленного рабочего стола (порты включены), с помощью клиента, который находится на моем компьютере. Соединение работает отлично, находясь на локальном хосте, как только я указываю IP-адрес удаленной машины, он выдает ошибку 400.

Сторона сервера:

    namespace SignalRHub
{
    class Program
    {
        static void Main(string[] args)
        {

            string url = @"http://localhost:8080/";
            using (WebApp.Start<Startup>(url))
            {
                Console.WriteLine(string.Format("Server running at {0}", url));
                Console.ReadLine();
            }
        }
    }
    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();
        }
    }

    [HubName("TestHub")]
    public class TestHub : Hub
    {
        public void DetermineLength(string message)
        {
            Console.WriteLine(message);

            string newMessage = string.Format(@"{0} has a length of: {1}", message, message.Length);
            Clients.All.ReceiveLength(newMessage);
        }
    }
}

Сторона клиента

namespace SignalRClient
{
    class Program
    {
        static void Main(string[] args)
        {
            IHubProxy _hub;
            //string url = @"http://localhost:8080/";


            string url = @"http://111.11.11.111:8080";



            var connection = new HubConnection(url);
            _hub = connection.CreateHubProxy("TestHub");

            try
            { 
                connection.Start().Wait();
                Console.WriteLine("Connection OK. Connected to: "+url);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.ReadLine();
                throw;
            }


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

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

            Console.Read();
        }
    }
}

Ошибка выдает:

«System.AggregateException: произошла одна или несколько ошибок. ---> Microsoft.AspNet.SignalR.Client.HttpClientException: StatusCode: 400, ReasonPhrase: 'Bad Request'»

Я знаю, что есть похожие темы, но поскольку я знаком только с консолью C# и приложениями для Windows, было бы здорово найти решение для подключения приложений к приложениям. Мой сервер RDP полностью доступен. У меня работают базы данных и другие службы, поэтому проблема, очевидно, в коде. Я, кстати, изменил IP в посте, так что это ненастоящее .. P.S. если я использую url = @ "http: // * 8080 /" на стороне сервера, компилятор выдаст «HttpListenerException: доступ запрещен» ...

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
723
1

Ответы 1

Проблема решена путем открытия соединения на стороне сервера с использованием CMD от имени администратора и установки:

netsh http add urlacl http://*:8080/ user=EVERYONE

Также убедитесь, что порты открыты в брандмауэре. Разработка приложений .NET. В ISS также должны быть включены службы WebSocket.

Другие вопросы по теме