4

我正在为我正在从事的果园项目构建一个即时聊天模块。我想使用 SignalR 来支持聊天,但是我遇到了困难:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>

我尝试的所有操作都收到 404 错误。我在 webconfig 中有 RAMFAR,我尝试在 IIS 上重写 url。我希望这是一件非常简单的事情,我昏昏欲睡的大脑看不到。我什至不确定 SignalR 是否适用于 Orchard,但我怀疑会有一些困难

4

2 回答 2

6

这比@mdm 描述的要棘手得多...... SignalR 使用一个自定义的 HttpModule 来处理 hubs。不幸的是,由于模块程序集的动态加载,没有办法在不改变 Orchard 核心的情况下从模块中连接 HttpModule。

幸运的是,我设法解决了问题并做了一个现场演示,让 Orchard 和 SignalR一起玩得很好!让它工作起来非常棘手,并且涉及删除 HttpModule 以支持自定义路由实现。在进行一些必要的清理后,我会将模块推送到 Orchard Gallery 并在此处发布更新。

更新:模块快完成了。自从我开始之后 SignalR 库发生了很多变化,因此需要合并这些。此外,在实际发布模块之前,我需要对 Orchard 核心(会话处理)进行一点更改。

更新 2: SignalR 现在使用 Owin,因此将所有内容连接起来要容易得多。Orchard 模块可在此处获得。您还可以从 BitBucket获取最新代码。顺便说一句,由于数据库事务处理发生了变化,我强烈建议使用 Orchard 1.x 分支中的代码进行 SignalR 开发。

于 2012-03-08T02:03:32.177 回答
0

在页面上输出的 URL 是什么?您希望它显示什么 URL?

通常,您会将 SignalR 代码放入Scripts/signalr并在视图顶部使用以下内容引用脚本:

@{
    Script.Include("signalr/script.js");
}

或者你可以IResourceManifestProvider在你的模块中实现一个(Orchard.jQuery 有一个很好的例子,或者看这里),然后使用你的脚本引用Script.Require

@{
    Script.Require("SignalR_Hubs");
}
于 2012-01-31T15:25:36.937 回答