在我的IIS 7.5上,我的SignalR应用程序总是使用长轮询。 根据我的搜索,IIS 7.5尚不支持WebSockets。
我希望,我错过了一些在IIS 7.5中启用WebSockets的工具或配置。或者我没有?
答案 0 :(得分:43)
您无法在IIS 7.5上使用WebSocket(换句话说,在Windows Server 2008 R2或Windows 7上),因为它需要HTTP.sys级别更改AFAIK。因此,您需要IIS 8.0和Windows Server 2012或Windows 8组合来利用WebSocket。此外,IIS Express 8.0也支持WebSockect,但如果您的操作系统低于Windows 8或Windows Server 2012,则无法继续使用它。
答案 1 :(得分:4)
IIS 8 Express支持websockets New Features
Windows 7被视为低级操作系统,不支持Web套接字。 Known Issues and Limitations
如果您想支持网络套接字,请升级到Windows 8!
答案 2 :(得分:-20)
以下是使用IIS 7.5在Windows 2008r2上托管所需的设置步骤的摘要:
Update the SignalR application's web.config file启用“为所有请求运行所有托管模块”(简而言之,这是RAMMFAR设置)。
Update the web page that uses SignalR与服务器通信: 添加对json2.js库的引用。 添加一个标签,强制内容以最近的浏览器模式显示。
Set up a Windows Server 2008r2 with IIS 7.5如下: 安装SignalR应用程序所需的.NET Framework版本。 创建一个站点并将其与相应的应用程序池关联。
更新Signalr应用程序的Web.config文件
在SignalR应用程序的web.config文件中,添加RAMMFAR设置以启用为所有请求运行所有托管模块。需要此设置才能在所有浏览器中的Windows 2008r2和IIS 7.5上运行SignalR示例应用程序。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
更新使用SignalR的网页
在使用SignalR与服务器通信的应用程序网页中,添加以下代码。
添加对json2.js JSON解析器库的引用。此脚本为以前没有它的浏览器版本提供JSON解析器。您可以通过以下两种方式之一添加脚本: 将NuGet包json2.js添加到您的项目中,然后在您的网页中引用它:
或者作为替代方案,在CDN上引用json2.js:
在页面的head部分添加以下标记。此标记(特别是IE =边缘值)强制Internet Explorer显示最新版本的内容,而不是早期模式(如IE7),这会阻止SignalR代码工作。
设置Windows Server 2008r2和IIS 7.5
如上所述,我在.NET 4上的SignalR教程中构建了示例SignalR应用程序。这是Windows 2008r2和IIS 7.5上的常见托管方案。该服务器是Windows Server 2008r2和IIS 7.5的新默认默认安装。
安装所需的.NET Framework版本。在这种情况下,我安装了.NET Framework 4。 在IIS管理器中创建新站点,并将该站点与应用程序池关联。使用集成模式应用程序池,SignalR不支持经典模式。对于此应用程序,我使用了ASP.NET v4.0应用程序池。
完成上述设置步骤后,我能够将基于.NET Framework 4的SignalR示例版本部署到服务器,并且在IE(版本8,9和10)中完美运行, Chrome和Firefox虽然使用的是后备传输方法(IE中的永久帧,以及其他浏览器中的服务器发送事件)。 SignalR开发人员感兴趣的是,除了上述步骤之外,我不必在应用程序的任何位置更改SignalR代码的任何一行,以使其工作。
这是一个简单的案例,但表明当服务器上没有websockets支持时,SignalR确实支持早期传输机制的“自动回退”。