我在c#中通过visual studio制作了一个Windows服务。 它使用SignalR连接到SQl数据库并接收通知。 但是,当我将服务部署到服务器本身(Windows Server 2008R2)时,它不起作用。该服务器也是托管SQL服务器的服务器。
这是一个SELF-HOSTED SignalR服务。它不使用IIS或类似的东西来运行。它被打包为一个简单的Windows服务。因此,它与典型的MVC,IIS托管应用程序(例如/ signalr / hubs pathing,web.config等)没有问题。
在我的开发计算机上,我使用sql server的WAN IP连接到它的数据库。当我运行它时,它会执行它应该执行的所有操作,并在每次服务器更改时触发通知。
在服务器本身,该服务安装正常,但不会触发任何通知。我把IP留作了开发服务的WAN IP,并计划在它运行后将其更改为localhost等,但事实并非如此。
现在,我将服务运行在我的开发计算机上,并且它运行良好。我真的更喜欢它在服务器本身,因为那是永远在线的电脑。
关于为什么在我的开发计算机上而不是服务器上工作的任何提示或想法?
谢谢!
[编辑] 我使用Windows 7和Visual Studio 2013作为我的开发设置。 该服务在localhost:2165(任意端口)上运行。我可以通过服务器本身的Web浏览器访问该地址。
答案 0 :(得分:-1)
您没有说明您的开发操作系统是什么,但如果您使用的是WebSockets,那么您需要至少拥有Windows 8或Windows Server 2012。
从文档中,supported platforms are(强调我的):
支持的服务器IIS版本
当在IIS中托管SignalR时,支持以下版本。请注意,如果使用客户端操作系统(例如用于开发(Windows 8或Windows 7)),则不应使用完整版本的IIS或Cassini,因为将会施加10个同时连接的限制,这将非常由于连接是短暂的,经常重新建立,并且在不再使用时不立即处理。 IIS Express应该在客户端操作系统上使用。
另请注意,对于 SignalR使用WebSocket,必须使用IIS 8或IIS 8 Express,服务器必须使用Windows 8,Windows Server 2012或更高版本,并且必须在IIS中启用WebSocket 。有关如何在IIS中启用WebSocket的信息,请参阅IIS 8.0 WebSocket协议支持。