如何在经典的 ASP Web 应用程序之上集成 WebSockets?

Posted

技术标签:

【中文标题】如何在经典的 ASP Web 应用程序之上集成 WebSockets?【英文标题】:How to integrate WebSockets on top of a classic ASP web application? 【发布时间】:2012-02-16 20:54:16 【问题描述】:

在我的一个项目中,我有一个非常活跃的经典 ASP 站点,需要将基于实时事件的提要集成为现有 UI 的一部分。未来有计划将站点架构升级为 MVC 或 MVP,但同时必须实施此新功能。

我决定为此使用 WebSocket 方法,因为这最终是我们将来想要使用的,而重新构建它没有意义。问题是,如何将其与经典的 ASP“架构”集成?

该站点已经实现了 jQuery 库,并希望利用 jQuery 的功能在给定页面上创建这些流式部分。

当前请求要求此新闻提要存在于每个页面上。因此,加载新页面将重新呈现新闻提要,并且应该从它留在最后一页的位置开始。为此,我猜需要读取位置指示器(我猜是会话变量)。

无论如何,这些都是要求。我正在考虑将整个现有的经典 ASP 站点包装在一个 MVC 或 MVP (C#/.Net) 项目中,以允许我们在开发遗留特性时开始替换它们,例如这个。

我想就这种情况下的一些推荐方法获得一些建议。

谢谢。

【问题讨论】:

【参考方案1】:

我会做一个SignalR 应用程序并将其集成到您的旧应用程序中。

很容易将 ASP 经典与 ASP.net MVC 集成。只需混合项目并从路线中排除 *.asp

routes.IgnoreRoute("resource.asp/*pathInfo");

在根 (/) 中会遇到一些问题,但可以使用重定向对其进行排序。

对于混合身份验证(如果需要),您需要在 MVC 中编写自己的身份验证,以使用您在 Classic ASP 中使用的相同身份验证 cookie。我过去已经成功地做到了这一点。

【讨论】:

这是不久前的事了,从那时起,在尝试了一些 Node.JS 和 Sockets.IO 之后,我实际上已经实现了一个 SignalR 应用程序,它驻留在一个单独的服务器上。一些小的 CORS 问题和僵尸连接导致了一些问题,并且仍在进行分析和调试。将其标记为答案,因为它最终是我所采用的,并推荐用于 .Net 中的异步。

以上是关于如何在经典的 ASP Web 应用程序之上集成 WebSockets?的主要内容,如果未能解决你的问题,请参考以下文章

经典 ASP 和 ASP.NET 集成

iis7.0的运行模式的方法简介

IIS经典模式VS集成模式

IIS集成和经典配置

IIS ASP.NET 何时使用集成模式或经典模式?

IIS7.5应用程序池集成模式和经典模式的区别