SignalR远程连接到RemoteDesktop

时间:2018-11-14 21:10:06

标签: c# winforms console signalr

情况简单。如何使用计算机上的客户端连接到远程桌面服务器(已启用端口)中的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,所以它不是真实的。 附言如果我在服务器端使用url = @“ http:// * 8080 /”,则编译器将显示“ HttpListenerException:访问被拒绝” ...

1 个答案:

答案 0 :(得分:0)

通过使用CMD作为管理员在服务器端打开连接并放置以下内容来解决问题:

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

还要确保在防火墙中打开了端口。 .NET应用程序开发ISS中的WebSocket服务也必须启用。