我最初在本教程中采用了以下代码:SignalR Getting Started Application,它将创建一个聊天室。我已经清理了一下html代码,只得到了我需要的部分。我确认聊天仍然有效:
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.6.4.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/signalr/jquery.signalR-2.0.0.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {
console.log('name is: ' + name);
console.log('message is: ' + message);
};
$.connection.hub.start().done(function () {
chat.server.send("khaled7", "message9");
});
});
</script>
尽可能有3个javascripts文件和1个脚本块:
现在,我需要将所有这些脚本加入一个文件并将其发送到我的远程移动客户端。我还在网络边,所以我开始自上而下加入文件/脚本。加入前2名工作正常,但一旦尝试添加第3个(/ signalr / hubs),我的Chrome控制台出现404错误:
我必须加入所有人。我怎样才能解决这个错误!?
答案 0 :(得分:2)
“/ signalr / hubs”不是物理文件,而是dynamically generated JavaScript code。
SignalR动态创建代理的JavaScript代码 服务于客户端以响应“/ signalr / hubs”URL。
您要做的是创建一个可以添加到单个文件中的physical file for the SignalR generated proxy:
- 安装Microsoft.AspNet.SignalR.Utils NuGet包。
打开命令提示符并浏览到包含SignalR.exe文件的tools文件夹。 tools文件夹位于以下位置:
[your solution folder]\packages\Microsoft.AspNet.SignalR.Utils.2.1.0\tools
输入以下命令:
signalr ghp /path:[path to the .dll that contains your Hub class]
.dll的路径是 通常是项目文件夹中的bin文件夹。此命令在signalr.exe所在的文件夹中创建名为server.js的文件。
- 醇>
将server.js文件放在项目的相应文件夹中,根据您的应用程序重命名,并添加对 它取代了“信号灯/集线器”参考。
问题是,您必须为集线器中的每次更改执行此操作。每一个。单。时间。