Signalr 远程输入维修操作时,信号机未广播
我的web api odata服务中有一个操作条目。它很好用。任何到达的消息都会记录到磁盘,因此我知道消息正在到达那里。如果我从网络上任何地方的客户端应用程序调用此操作,消息将被记录到磁盘,并使用SignalR将消息广播到正在侦听的javascript客户端。这一切都很完美 如果我使用相同的客户端应用程序调用相同的操作条目,但来自不同的网络,那么消息仍然可以正常到达。消息及其所有数据都被记录到磁盘文件中。然而,信号器不会广播消息。在使用信号器广播之前,我已将消息数据写入日志文件一条语句,因此我知道我有要广播的有效数据。这是我的行动切入点。同样,这段代码没有什么问题,因为我每次都能很好地接收到消息Signalr 远程输入维修操作时,信号机未广播,signalr,Signalr,我的web api odata服务中有一个操作条目。它很好用。任何到达的消息都会记录到磁盘,因此我知道消息正在到达那里。如果我从网络上任何地方的客户端应用程序调用此操作,消息将被记录到磁盘,并使用SignalR将消息广播到正在侦听的javascript客户端。这一切都很完美 如果我使用相同的客户端应用程序调用相同的操作条目,但来自不同的网络,那么消息仍然可以正常到达。消息及其所有数据都被记录到磁盘文件中。然而,信号器不会广播消息。在使用信号器广播之前,我已将消息数据写入日志文件一条语句,因此我知
[HttpPost]
[ODataRoute("MyResponse()")]
public IHttpActionResult MyResponse(ODataActionParameters parameters)
{
IHttpActionResult retVal = null;
BridgeResponse bridgeResponse = null;
try
{
if (parameters != null)
{
bridgeResponse = (BridgeResponse)parameters["bridgeResponse"];
if (bridgeResponse != null)
{
我有一个启动文件,可以在其中进行初始化:
[assembly: OwinStartup(typeof(XXXXX.Startup))]
namespace XXXXX
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR("/Beacon", new HubConfiguration());
}
}
}
这是我的中心
[HubName("Beacon")]
public class Beacon : Hub
{
private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<Beacon>();
public static void SendMessageToHub(string data, String To)
{
hubContext.Clients.All.displayData(data);
}
}
[HubName(“信标”)]
公共类信标:集线器
{
私有静态IHubContext hubContext=GlobalHost.ConnectionManager.GetHubContext();
公共静态void SendMessageToHub(字符串数据,字符串到)
{
hubContext.Clients.All.displayData(数据);
}
}
不太可能。我的javascript客户端使用“displayData”方法显示数据。同样,如果我在我的网络中的任何地方调用我的操作,这一切都会完美工作。如果我从另一个网络调用该操作,除了信号器广播之外,其他一切都工作
这件事已经困扰了我好几天了。非常感谢您的帮助。请添加更多关于“不同网络”含义的信息。此外,应用程序是如何托管的?在中心内使用静态方法的原因/背景是什么?