在我的IIS 7.5上,我的SignalR应用程序总是使用长轮询。根据我的搜索,IIS 7.5还不支持WebSockets。
我希望,我错过了一些在IIS 7.5中启用WebSockets的工具或配置。还是我没有?
你不能在IIS 7.5(换句话说,在Windows Server 2008 R2或Windows 7)上使用WebSocket,因为它需要HTTP。sys级别自动更改。因此,您需要IIS 8.0和Windows Server 2012或Windows 8组合来利用WebSocket。此外,IIS Express 8.0也支持websocket,但如果你在低于Windows 8或Windows Server 2012的操作系统上,你仍然无法利用它。
IIS 8 Express支持websockets新功能
Windows 7被认为是一个底层操作系统,不支持Web Sockets。已知问题和限制
如果你想支持web-sockets,是时候升级到Windows 8了!
下面是在Windows 2008r2上安装IIS 7.5所需的安装步骤的摘要:
更新SignalR应用的web。配置文件启用"为所有请求运行所有管理模块";(简而言之,这是RAMMFAR设置)。
更新使用SignalR与服务器通信的网页:添加对json2.js库的引用。添加一个标签,强制内容以最近的浏览器模式显示。
安装IIS 7.5的Windows Server 2008r2安装SignalR应用程序所需的。net框架版本。创建站点并将其与适当的应用程序池关联。
更新Signalr应用程序的Web配置文件
在你的SignalR应用程序的web中。添加RAMMFAR设置,以便为所有请求运行所有托管模块。要想在所有浏览器中在Windows 2008r2和IIS 7.5上运行SignalR示例应用程序,必须使用此设置。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
更新使用SignalR的Web页面
在使用SignalR与服务器通信的应用程序web页面中,添加以下代码:
添加对json2.js JSON解析器库的引用。这个脚本为以前没有JSON解析器的浏览器版本提供了一个JSON解析器。您可以通过以下两种方式之一添加脚本:将NuGet包json2.js添加到您的项目中,然后在您的web页面中引用它:
或者在CDN上引用json2.js:
在页面的标题部分添加以下标签。这个标签,特别是IE=edge值,强制Internet Explorer显示最新可用版本的内容,而不是阻止SignalR代码工作的早期模式(如IE7)。
设置Windows Server 2008r2和IIS 7.5
如前所述,我从。net 4的SignalR入门教程中构建了样例SignalR应用程序。这是Windows 2008r2和IIS 7.5上常见的托管场景。该服务器是一个新的默认默认安装的Windows server 2008r2和IIS 7.5。安装所需的。net框架版本。在这种情况下,我安装了。net Framework 4。在IIS管理器中创建一个新站点,并将该站点与应用程序池关联。使用集成模式应用程序池,SignalR不支持经典模式。对于这个应用程序,我使用了ASP。. NET v4.0应用程序池。
在遵循上述设置步骤之后,我能够将基于。net Framework 4版本的Getting Started with SignalR示例部署到服务器上,并且它在IE(版本8,9和10),Chrome和Firefox中完美地工作,即使它使用了回调传输方法(IE中的永久帧和其他浏览器中的服务器发送事件)。对于SignalR开发人员来说,有趣的是,除了上面的步骤之外,我不需要在应用程序的任何地方更改SignalR代码的任何一行,就可以使其工作。
这是一个简单的例子,但表明SignalR确实支持"自动回退"。