我的网络api odata服务中有一个Action条目。它工作正常。到达的任何消息都会记录到磁盘,所以我知道消息到达那里。如果我从网络上任何位置的客户端应用程序调用此操作,则会将消息记录到磁盘并使用SignalR将消息广播到我的侦听javascript客户端。这一切都很完美。
如果我使用相同的客户端应用程序调用相同的Action条目,但是来自不同的网络,那么消息STILL就可以了。消息及其所有数据都记录到磁盘文件中。但是,SignalR不会广播消息。在使用SignalR进行广播之前,我已将消息数据写入我的日志文件中,因此我知道我有有效的数据要广播。这是我的行动切入点。同样,这段代码没有任何问题,因为我每次都收到这条消息。
[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);
}
}
也不多。我的javascript客户端具有“displayData”方法,其中显示数据。同样,如果我从网络中的任何地方调用我的动作,这一切都可以完美地运行。如果我从不同的网络呼叫动作,除了SignalR广播外,一切都有效。
这个已经困扰了我几天了。任何帮助表示赞赏。