.net core 无法连接到.NET core 3.1中的远程信号器集线器
我正在尝试主持一个远程信号中心。我创建了一个.NETCore3.1WebAPI应用程序,在我的启动类中有以下代码.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
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);
}));