要解决Angular应用程序无法与ASP.NET Core SignalR协商的CORS错误,可以按照以下步骤进行操作:
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
app.UseCors("CorsPolicy");
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub("/chathub");
});
export const environment = {
production: false,
signalrUrl: 'http://localhost:5000/chathub'
};
import { Injectable } from '@angular/core';
import { HubConnection, HubConnectionBuilder } from '@microsoft/signalr';
import { environment } from './../environments/environment';
@Injectable({
providedIn: 'root'
})
export class SignalRService {
private hubConnection: HubConnection;
constructor() {
this.hubConnection = new HubConnectionBuilder()
.withUrl(environment.signalrUrl)
.build();
}
public startConnection = () => {
this.hubConnection
.start()
.then(() => console.log('SignalR connection started'))
.catch(err => console.log('Error while starting SignalR connection: ' + err));
}
public addTransferChartDataListener = () => {
this.hubConnection.on('transferChartData', (data) => {
console.log(data);
// Process received data
});
}
}
确保将@microsoft/signalr
库添加到Angular应用程序中:
npm install @microsoft/signalr
这些步骤将帮助您解决Angular应用程序无法与ASP.NET Core SignalR协商的CORS错误,并使两者能够成功通信。