更改 SignalR 的 ASP.NET 核心控制台服务器的 IP 地址和端口

Change IP address and port of ASP.NET Core console server for SignalR

我正在 运行 在控制台应用程序上安装 .NET Core SignalR 服务器。使用下面的代码,我可以 运行 服务器。但是由于此服务器的客户端是另一个 IP 地址,我需要将我的 SignalR 服务器设置为 运行 当前 PC 的 IP 地址。在 运行ning 之后,我得到的是:

我需要将 http://localhost:5000 更改为当前主机的 IP 地址 192.168.1.4 并将端口设置为 8090。请在下面查看我的代码:

Startup.cs

public class Startup
    {

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSignalR(hubOptions => {
                hubOptions.EnableDetailedErrors = true;
                hubOptions.KeepAliveInterval = TimeSpan.FromMinutes(1);
            });

            services.AddCors(options =>
            {
                options.AddPolicy("SomePolicy", builder => builder
                   .SetIsOriginAllowed(IsOriginAllowed)
                   .AllowAnyMethod()
                   .AllowAnyHeader()
                   .AllowCredentials()
                   .Build()
               );
            });
        }

        private bool IsOriginAllowed(string host)
        {
            var allowedOrigin = Configuration.GetSection("AcceptedOrigin").Get<string[]>();
            return allowedOrigin.Any(origin => origin == host);
        }

        public void Configure(IApplicationBuilder app)
        {
            app.UseCors("SomePolicy");
            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapHub<RimHub>("/rimHub");
            });
        }
    }

Program.cs

class Program
    {
        static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        private static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();
    }

在以前版本的SignalR上,我们可以使用.WithUrl('IPADDRESS'),但是对于这个新版本,我不知道如何实现它。

因为您正在使用 WebHost.CreateDefaultBuilder,所以 Kestrel 被用作网络服务器(参见 Microsoft Documentation)。

您可以在 Microsoft to configure Kestrel (e.g. via appsettings.json or in Startup). Examples can also be found 找到详细信息。

你以前是怎么在服务器端使用.WithUrl的?我宁愿认为该方法是用在 client side.