问题描述: 在Angular应用程序中,尝试连接到ASP.NET API的SignalR Hub时,返回404 Not Found错误。
解决方法:
npm install @aspnet/signalr
import { SignalRModule } from '@aspnet/signalr';
@NgModule({
imports: [
SignalRModule.forRoot()
],
...
})
export class AppModule { }
import { SignalRService } from './signalr.service';
@Component({
...
})
export class MyComponent {
constructor(private signalRService: SignalRService) { }
}
import { Injectable } from '@angular/core';
import { HubConnection, HubConnectionBuilder } from '@aspnet/signalr';
@Injectable({
providedIn: 'root'
})
export class SignalRService {
private hubConnection: HubConnection;
constructor() {
this.hubConnection = new HubConnectionBuilder()
.withUrl('http://your-api-url/signalr-hub') // 替换为你的API的SignalR Hub URL
.build();
this.hubConnection.start()
.then(() => console.log('SignalR connection started'))
.catch(err => console.log('Error while starting SignalR connection: ' + err));
}
}
请确保将上述代码中的http://your-api-url/signalr-hub
替换为你的API的SignalR Hub的URL。
ConfigureServices
方法中添加以下代码:services.AddSignalR();
在Configure
方法中添加以下代码:
app.UseSignalR(routes =>
{
routes.MapHub("/signalr-hub"); // 替换为你的Hub类的名称
});
请确保将上述代码中的YourHubClass
替换为你的Hub类的名称。
确保ASP.NET API项目中正确配置了Identity Server 3。请参考Identity Server 3的文档进行正确的配置。
确保API的SignalR Hub的URL在Identity Server 3的允许列表中。在Identity Server 3的配置文件中,添加以下代码:
public static IEnumerable GetClients()
{
return new List
{
new Client
{
...
AllowedCorsOrigins = new List
{
"http://your-angular-app-url" // 替换为你的Angular应用程序的URL
},
...
}
};
}
请确保将上述代码中的http://your-angular-app-url
替换为你的Angular应用程序的URL。
希望上述解决方法能帮助到你解决问题!
上一篇:Angular链接不导向组件
下一篇:Angular连接数字而不是相加