我在.net core 3.1中使用SignalR,角度为9。它提供了错误。 通过CORS策略已阻止从源“ http:// localhost:4200”访问“ http:// localhost:5000 / chathub / negotiate”处的XMLHttpRequest:对预检请求的响应未通过访问控制检查:当请求的凭据模式为“ include”时,响应中的“ Access-Control-Allow-Origin”标头不得为通配符“ *”。 XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。
我将在配置SignalR的地方分享我的创业公司,并提供在.net核心上创建的集线器。 我还提供了用角度9编写的客户端连接代码。
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader());
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapHub<ChatHub>("/chathub");
});
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
}
}
这是我的集线器。
public class ChatHub: Hub
{
public static List<UserModel> userModel = new List<UserModel>();
public async Task SendMessage(UserModel model)
{
await Clients.All.SendAsync("ReceiveMessage", model);
}
}
这是我用角度编写的客户端代码
export class StartComponent implements OnInit {
public _apiservice : ApiServiceService;
private _hubConnection: HubConnection;
constructor(apiservice : ApiServiceService) {
this._apiservice = apiservice;
this.createConnection();
this.startConnection();
}
register(){
this._apiservice.registerUser();
}
ngOnInit(): void {
}
private startConnection(): void {
this._hubConnection
.start()
.then(() => {
console.log('Hub connection started');
})
.catch(err => {
console.log('Error while establishing connection, retrying...');
// setTimeout(function () { this.startConnection(); }, 5000);
});
}
private createConnection() {
this._hubConnection = new HubConnectionBuilder()
.withUrl("http://localhost:5000/" + 'chathub')
.build();
console.log('hub connection')
}
}
我正在本地计算机上工作。我的角度应用程序在http:// localhost:4200 /上运行,而点网核心应用程序在http:// localhost:5000 /
上运行