websocket - IIS 7.5 上的 SignalR WebSockets

标签 websocket iis-7.5 real-time signalr

在我的 IIS 7.5 上,我的 SignalR 应用程序总是使用长轮询。
根据我的搜索,IIS 7.5 尚不支持 WebSockets。

我希望,我错过了一些在 IIS 7.5 中启用 WebSockets 的工具或配置。还是我没有?

最佳答案

以下是在带有 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=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 Framework 版本。在这种情况下,我安装了 .NET Framework 4。
在 IIS 管理器中创建一个新站点,并将该站点与应用程序池相关联。使用集成模式应用程序池,SignalR 不支持经典模式。对于这个应用程序,我使用了 ASP.NET v4.0 应用程序池。
按照上述设置步骤后,我能够将 SignalR 入门示例的基于 .NET Framework 4 的版本部署到服务器,并且它在 IE(版本 8、9 和 10)、Chrome 和Firefox 即使它使用回退传输方法(IE 中的永久帧,以及其他浏览器中的服务器发送事件)。对于 SignalR 开发人员来说,有趣的是,除了上述步骤之外,我无需更改应用程序中任何地方的一行 SignalR 代码即可完成这项工作。
这是一个简单的案例,但表明当服务器上不提供 websockets 支持时,SignalR 确实支持“自动回退”到早期的传输机制。

关于websocket - IIS 7.5 上的 SignalR WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128347/

相关文章:

asp.net-mvc - 对静态文件的请求正在命中 ASP.NET MVC3 中的托管代码

php Ratchet websocket SSL连接?

JavaScript WebSocket 非空终止字符串

.net - 重复 'system.web.extensions/scripting/scriptResourceHandler'

iphone - 在滚动时有效调整 UITableViewCell 的大小

linux - SD卡写入性能

Java - 网络应用程序 - 实时

node.js - Socket-io 客户端不断发送连接请求

javascript - 如何处理奇怪组合的 websocket 消息?

c# - 客户端和服务器无法通信,因为它们不具备通用算法 - ASP.NET C# IIS TLS 1.0/1.1/1.2 - Win32Exception