我们无法通过控制台应用程序连接到部署在服务器(Windows Server 2008 Enterprise SP2和IIS 6)上的signalR集线器,我们在PC上本地测试了所有内容,并且一切正常,但已部署在服务器(IIS)上6)我们无法在服务器本身上进行远程甚至本地连接。
没有SignalR经验,但同一客户端在正常PC上运行良好。 (客户端和集线器在同一台PC中)。 我们测试了服务器的连接性和权限,一切都很好。 通过网络浏览器远程调用集线器URL(http://hr1/HRNotificationHub)时,我们可以访问它,但是当添加signalR / hub时,浏览器中也会出现404错误。
static void Main(string [] args)//客户端 { 尝试 { IHubProxy _hub;
string url = @"http://localhost/HRNotificationHub/";
var connection = new HubConnection(url);
_hub = connection.CreateHubProxy("HRHub");
connection.Start().Wait();
_hub.On("ReceiveMessage", x => Console.WriteLine(x));
string line = null;
while ((line = System.Console.ReadLine()) != null)
{
_hub.Invoke("BroadcastMessageToAll", line).Wait();
}
Console.Read();
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException.ToString());
Console.Read();
}
}
public class Startup //Server
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration()
{
EnableDetailedErrors = true,
EnableJSONP = true,
EnableJavaScriptProxies = true
};
app.MapSignalR(hubConfiguration);
}
}
[HubName("HRHub")]
public class HRHub : Hub //Hub Class
{
public void BroadcastMessageToAll(string message)
{
Clients.All.newMessageReceived(message);
var newMessage = message + "-newmessage";
Clients.All.ReceiveMessage(newMessage);
}
public void JoinAGroup(string group)
{
Groups.Add(Context.ConnectionId, group);
}
public void RemoveFromAGroup(string group)
{
Groups.Remove(Context.ConnectionId, group);
}
public void BroadcastToGroup(string message, string group)
{
Clients.Group(group).newMessageReceived(message);
}
}
答案 0 :(得分:0)
在本地,它在IIS Express下正常运行。
但是,在服务器上,您正在运行IIS 6,这不是受支持的版本。请检查documentation。至少需要IIS 7,但如果希望使用Web套接字,则需要IIS 8。
答案 1 :(得分:0)
我为解决此问题所做的所有工作就是在服务器上部署的项目的webconfig中添加以下行:
<modules runAllManagedModulesForAllRequests="true" />