服务器中的My StartUp.cs(使用Owin.UseCors实现跨域请求):
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
// Setup the CORS middleware to run before SignalR.
// By default this will allow all origins. You can
// configure the set of origins and/or http verbs by
// providing a cors options with a different policy.
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
// You can enable JSONP by uncommenting line below.
// EnableJSONP = true
};
// Run the SignalR pipeline. We're not using MapSignalR
// since this branch already runs under the "/signalr"
// path.
map.RunSignalR(hubConfiguration);
});
}
我的客户端(控制台项目):
static void Main(string[] args)
{
IHubProxy _hub;
string url = @"http://111.111.111.111:13098/signalr/hubs";
var connection = new HubConnection(url, querystringData);
_hub = connection.CreateHubProxy("TestHub");
connection.Start().Wait();
_hub.On("Broadcast", x => Console.WriteLine(x));
}
只有当我在服务器上运行客户端(console.exe)(信号器项目托管在IIS中)时,它才能连接到集线器。
如果我在我的电脑上运行客户端,它就无法连接。
为什么?
在Chrome上输入http://111.111.111.111:13098/signalr/hubs:
答案 0 :(得分:0)
你能启用JSONP吗?
var hubConfiguration = new HubConfiguration { EnableJSONP = true };
答案 1 :(得分:0)
解决。
我使用了错误的端口......防火墙阻止了它。