2012-08-03 53 views
3

我有一个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为未定义后

Screenshot in debug mode

其次我的Chrome网络节目; - Network -Chrome

第三,点击用于signalr /集线器引发剂,当我不落实的错误: - enter image description here

我试图改变URL的脚本的,还跑了作为IIS,但无法得到它的工作。 如果我把我的.cshtml脚本(查看),并改变 - >使用本地IIS网络服务器,它的做工精细 任何帮助!

+0

我假设你是包括基本jQuery库呢?还有,是否定义了$ .connection? – 2012-08-03 07:28:13

+0

如果您在浏览器中手动导航到该网址,它会显示什么内容? – davidfowl 2012-08-03 07:30:44

+0

@AndersHolmström我已经贴在我的第一个屏幕截图连接的响应。只是想更新,如果我保持我的脚本在.cshtml(视图)和更改使用本地IIS Webserver,其工作正常! – Shubh 2012-08-03 08:23:57

回答

3

@Scripts.Render("~/bundles/modernizr")

@Scripts.Render("~/bundles/jquery")

在布局部分评论此节,并为我工作。

+0

so signalr与捆绑软件不兼容? – daniel 2013-01-19 11:58:57

+0

在编译时加载Bundle,但运行时会生成'/ signalr/hubs'。我认为这就是为什么在这种情况下使用bundle不起作用的原因。 – 2014-02-20 14:32:08

1

我发现在bundle配置文件中添加对/signalr/hubs的引用不会起作用,因为它是在运行时生成的,捆绑发生在编译时。
所以我这样做:
1-创建这样一个部分在每个视图我需要有参考signalr/hubs

@section SignalRScripts{ 
    <script src="/signalr/hubs"></script> 
    } 

在我的布局文件2 - 渲染的所有其他脚本,渲染本节之后:

@Scripts.Render("~/js") 
    @RenderSection("SignalRScripts", required: false) 
    @RenderSection("Scripts", required: false) 

然后它工作正常。