我试图通过一个单独的小型客户端应用程序来打击我的MVC5 SignalR Hub,但无济于事。
一些背景知识:
我有一个使用SingalR 1.10的常规ASP.NET应用程序,我可以使用我的客户端。代码:
ASP.NET Hub:
namespace SignalrTest
{
public class ScanHub : Hub
{
public void SendScan(string data, string xmlData)
{
Clients.All.broadcastMessage(data, xmlData);
}
}
}
客户端:
connection = new HubConnection("http://localhost:2446/");
hubProxy = connection.CreateHubProxy("ScanHub");
connection.Start();
........
private static async Task RunAsync()
{
object[] param = new object[2];
param[0] = _Data;
param[1] = _xmlData;
await hubProxy.Invoke("SendScan", param);
}
再次,这工作正常。我的MVC Hub与另一个相同(我确保更改了客户端HubConnection地址),我的Startup.cs为:
[assembly: OwinStartupAttribute(typeof(SignalrTest.Startup))]
namespace SignalrTest
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
运行我的客户端,它没有错误地触发,但我没有得到任何响应或任何迹象表明MVC方面发生了任何事情。
任何人都可以看到我的MVC应用程序出错了吗?我不清楚是否需要改变路由。我很高兴发布任何其他有助于解决我的问题的代码。谢谢你提前。
答案 0 :(得分:0)
尝试将您在.NET客户端上的连接丢弃为异步方法,并在连接良好时进行快速测试。
private async void Connect()
{
connection = new HubConnection("http://localhost:2446/");
hubProxy = connection.CreateHubProxy("ScanHub");
await connection.Start();
//If using WPF you can test like so if not use whatever output method you prefer to see if it connects
if (Connection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Connected)
{
MessageBox.Show("Connected!");
}
else
{
MessageBox.Show("Fail!");
}
}
答案 1 :(得分:0)
你真的使用SignalR 1.1吗? SignalR 1.1不使用OWIN启动类,MapSignalR方法甚至不应该编译。