我有一个MVC 4应用程序,它有一个注册页面。
集线器的代码如下: -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SignalR.Hubs;
[HubName("messageHub")]
public class MessageHub : Hub
{
/// <summary>
/// Broadcast the message to all clients
/// </summary>
/// <param name="message">message to be broadcasted</param>
public void Broadcast(string message, string messagetype, string messagetitle)
{
this.Clients.showMessage(message, messagetype, messagetitle);
}
public void Getsubscription()
{
}
}
同样,JS中心代码是: -
<script type="text/javascript" src="@Url.Content("~/Scripts/json2.js")"></script>
<script src= "@Url.Content("~/Scripts/jquery.signalR-0.5.2.js")" type="text/javascript"></script>
<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
<h2>Index</h2>
<script type="text/javascript">
$(document).ready(function () {
//Initialize hub
var hub = $.connection.messageHub;
// hub.start();
$.connection.hub.start();
//Append event to Button
//hub.broadcast("c","b","a");
});
</script>
现在,在运行之后将$ .connection.messageHub作为未定义
其次我的chrome网络显示; -
第三,当点击信号器/集线器的启动器时,我没有实现错误: -
我尝试更改脚本的URL,也作为IIS运行,但无法使其正常工作。 如果我将我的脚本保存在.cshtml(查看)中并更改 - &gt;使用本地IIS Web服务器,它的工作正常 任何帮助。!
答案 0 :(得分:3)
@ Scripts.Render( “〜/捆绑/ Modernizr的”)
@ Scripts.Render( “〜/捆绑/ jquery的”)
在布局部分评论了这一部分并为我工作。
答案 1 :(得分:1)
我发现在bundle config中添加对/signalr/hubs
的引用不起作用,因为它是在运行时生成的,捆绑是在编译时发生的。
所以我这样做了:
1-在每个视图中创建了一个这样的部分,我需要引用signalr/hubs
:
@section SignalRScripts{
<script src="/signalr/hubs"></script>
}
在渲染所有其他脚本后,在我的布局文件中2-,呈现此部分:
@Scripts.Render("~/js")
@RenderSection("SignalRScripts", required: false)
@RenderSection("Scripts", required: false)
然后它工作正常。