C# 从控制器调用SignalR Core Hub方法时,angular客户端未接收数据
从控制器调用SignalR Core Hub方法时,Angular SignalR客户端未从asp.net接收数据,但当我从localhost测试数据时,该方法有效C# 从控制器调用SignalR Core Hub方法时,angular客户端未接收数据,c#,angular,signalr,asp.net-core-signalr,C#,Angular,Signalr,Asp.net Core Signalr,从控制器调用SignalR Core Hub方法时,Angular SignalR客户端未从asp.net接收数据,但当我从localhost测试数据时,该方法有效 this.connection = new signalR.HubConnectionBuilder() .configureLogging(signalR.LogLevel.Information) .withUrl('https://<My-Public-Domain>
this.connection = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Information)
.withUrl('https://<My-Public-Domain>/uphub')
.withAutomaticReconnect([0, 1000, 5000, 10000])
.build();
this.connection.start().then(() => {
console.log('SignalR Connected!');
}).catch((err: { toString: () => any; }) => {
return console.error(err.toString());
});
this.connection.on("Announce", (msg: any) => {
console.log(msg)
});
我有一个角度与asp.net后端网站。我使用信号器提供实时数据服务。我在localhost
中进行了调试和测试,它运行良好,angular客户端收到了数据。但是当我发布API时,angular客户端没有收到任何数据
MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Biz1PosApi.Hubs
{
public class MyHub: Hub<IHubClient>
{
public void Announce(string message)
{
Clients.All.Announce(message);
}
public async Task joinroom(string room)
{
await Groups.AddToGroupAsync(Context.ConnectionId, room);
await Clients.Group(room).JoinMessage($"{Context.ConnectionId} joined {room}");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Biz1PosApi.Hubs
{
public interface IHubClient
{
Task Announce(string message);
Task NewOrder(string platform, int UPOrderId);
Task OrderUpdate(int UPOrderId);
Task JoinMessage(string message);
}
}
public ValuesController(IHubContext<UrbanPiperHub, IHubClient> uhubContext)
{
_uhubContext = uhubContext;
...
}
[HttpPost("test")]
public void test(string message)
{
_uhubContext.Clients.All.Announce(message);
}
值控制器.cs
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Biz1PosApi.Hubs
{
public class MyHub: Hub<IHubClient>
{
public void Announce(string message)
{
Clients.All.Announce(message);
}
public async Task joinroom(string room)
{
await Groups.AddToGroupAsync(Context.ConnectionId, room);
await Clients.Group(room).JoinMessage($"{Context.ConnectionId} joined {room}");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Biz1PosApi.Hubs
{
public interface IHubClient
{
Task Announce(string message);
Task NewOrder(string platform, int UPOrderId);
Task OrderUpdate(int UPOrderId);
Task JoinMessage(string message);
}
}
public ValuesController(IHubContext<UrbanPiperHub, IHubClient> uhubContext)
{
_uhubContext = uhubContext;
...
}
[HttpPost("test")]
public void test(string message)
{
_uhubContext.Clients.All.Announce(message);
}
公共价值控制人(IHubContext uhubContext)
{
_uhubContext=uhubContext;
...
}
[HttpPost(“测试”)]
公共无效测试(字符串消息)
{
_uhubContext.Clients.All.annound(消息);
}
角度客户端
this.connection = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Information)
.withUrl('https://<My-Public-Domain>/uphub')
.withAutomaticReconnect([0, 1000, 5000, 10000])
.build();
this.connection.start().then(() => {
console.log('SignalR Connected!');
}).catch((err: { toString: () => any; }) => {
return console.error(err.toString());
});
this.connection.on("Announce", (msg: any) => {
console.log(msg)
});
this.connection=new signal.HubConnectionBuilder()
.configureLogging(信号器.LogLevel.Information)
.withUrl('https:///uphub')
.带有自动连接([0,1000,5000,10000])
.build();
this.connection.start()。然后(()=>{
console.log('signal Connected!');
}).catch((err:{toString:()=>any;})=>{
返回console.error(err.toString());
});
this.connection.on(“宣布”,(msg:any)=>{
控制台日志(msg)
});
我看过很多实用教程,它们都是以同样的方式编写的,但对我来说并不适用。发布API时,angular客户端不工作。我一直在localhost
中运行angular。这可能是个问题吗
我在localhost中进行了调试和测试,它运行良好,angular客户端收到了数据。但是当我发布API时,angular客户端没有收到任何数据
请检查您是否已启用CORS以允许Angular客户端连接到您的信号器应用程序
请仔细检查指定的URL,并确保您的Angular客户端连接到正确的端点
此外,您可以在浏览器控制台选项卡中检查它是否输出有关连接的任何有用日志,并参考以下文档来解决问题
谢谢您的回答。但是angular客户端连接并接收来自信号集线器的消息。但是当从控制器调用hub方法时,angular客户端没有接收到它。
当从控制器调用hub方法时,angular客户端没有接收到它。
API操作是否执行良好并返回正确的响应状态代码?此外,若angular客户端调用相同的hub方法,它是否也能按预期工作?