Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 无法连接到.NET core 3.1中的远程信号器集线器_.net Core_Signalr Hub_Signalr.client_Asp.net Core Signalr - Fatal编程技术网

.net core 无法连接到.NET core 3.1中的远程信号器集线器

.net core 无法连接到.NET core 3.1中的远程信号器集线器,.net-core,signalr-hub,signalr.client,asp.net-core-signalr,.net Core,Signalr Hub,Signalr.client,Asp.net Core Signalr,我正在尝试主持一个远程信号中心。我创建了一个.NETCore3.1WebAPI应用程序,在我的启动类中有以下代码 public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddCors(options => options.AddPolicy("CorsPolicy", builder => { b

我正在尝试主持一个远程信号中心。我创建了一个.NETCore3.1WebAPI应用程序,在我的启动类中有以下代码

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    services.AddCors(options => options.AddPolicy("CorsPolicy",
    builder =>
    {
        builder
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowAnyOrigin();
    }));

    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();
    app.UseStaticFiles();

    app.UseCors("CorsPolicy");

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapHub<KappHub>("/myHub");
    });
}
我的第二个项目中的启动如下所示:

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();
    app.UseStaticFiles();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
当我运行此项目并从第二个项目导航到index.html时,它无法从第一个项目连接到signalR hub。在开发人员工具中,我返回了一个“(failed)net::ERR_failed”状态,没有任何其他信息


上面的示例使用SSL(https)。另外,在http模式下运行这两个解决方案时,我遇到了相同的问题。

将您的COR设置为:

var connection = new signalR.HubConnectionBuilder().withUrl("https://localhost:5101/myHub").build();
services.AddCors(options => options.AddPolicy("CorsPolicy",
                   builder =>
                   {
                       builder
                           .WithOrigins("https://localhost:44339/")
                           .AllowAnyHeader()
                           .AllowAnyMethod()
                           .AllowCredentials()
                           .SetIsOriginAllowed((host) => true);
    }));

注意顺序

详细阅读中的信号器和CORS,您缺少AllowCredentials()部分,AllowAnyOrigin将无法与AllowCredentials一起使用。
services.AddCors(options => options.AddPolicy("CorsPolicy",
                   builder =>
                   {
                       builder
                           .WithOrigins("https://localhost:44339/")
                           .AllowAnyHeader()
                           .AllowAnyMethod()
                           .AllowCredentials()
                           .SetIsOriginAllowed((host) => true);
    }));