var chat = $ .connection.chat中的对象未定义错误;使用SignalR时

时间:2011-09-17 21:27:13

标签: asp.net signalr

我尝试安装SignalR库来创建示例聊天应用程序。我相信我已经遵循了文档中给出的所有步骤。我不确定失败的原因是什么。

创建聊天对象时失败。我正在使用VS2010,我使用VS2010软件包下载工具下载了SignalR。

是否有人对此有任何疑问?

谢谢, 萨米尔


感谢Hurricanepkt帮助我。

是的,我确实使用VS2010“添加库包”对话框通过nuget获取所有signalR。我在var chat = $ .connection.chat;

中得到了对象未定义的错误

我刚刚开始工作,但它是ASP.NET Web应用程序项目。我无法使用ASP.NET网站项目。我不知道为什么。

我相信它是由于网站项目中的动态dll创建与ASP.NET Web应用程序项目中的固定dll。

你遇到过这样的问题吗?

4 个答案:

答案 0 :(得分:4)

您的枢纽名称是什么?如果您已将其更改为"聊天"以外的其他内容然后它不会起作用。我有同样的问题,因为我改变了我的意思:

    public class ChatHub : Hub
    {
        public void Send(string message)
        {
            Clients.addMessage(message);
        }
    }

在Javascript中:

var chat = $.connection.chat;

需要更改为

var chat = $.connection.chatHub;

答案 1 :(得分:1)

由于同样的问题,我很沮丧。 它适用于Web Project,但在Web站点中却不行。所以我检查了动态创建的脚本文件。

Left: Web Project - Right: Web Site 左:Web项目 - 右:网站(http://i.imgur.com/X1XrT.jpg

正如您在网站上看到的那样,它并没有创建"聊天"对象,所以它说undefined。 在阅读关于动态dll创建的句子后,我将我的代码放在一个单独的.cs文件中,然后将该cs文件放在App_Code文件夹中。我尝试了bam,它有效。检查动态脚本文件:

web site projecthttp://i.imgur.com/CSInO.jpg

我对此处的技术问题了解不多,但将代码放在位于App_Code文件夹中的单独的类文件可以解决问题。 祝你有愉快的一天

答案 2 :(得分:0)

在阅读您的问题时,我在MVC3应用程序中使用它时遇到了同样的问题。

您可以发布脚本参考吗?我几乎可以打赌你正在使用这样的东西,一个静态的位置字符串:

"../script/signalr.min.js"

当您应该使用(或WebForms相当于相对路径)时:

<!-- Used for SignalR -->
<script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.signalR.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>

今天我遇到了同样的问题,David Fowler亲自帮助过我。

无论如何,请阅读我的博客文章并将其关注到T,您将拥有MVC3的工作版本。

http://sergiotapia.com/2011/09/signalr-with-mvc3-chat-app-build-asynchronous-real-time-persistant-connection-websites/

答案 3 :(得分:0)

我怀疑我们已经遵循相同的文档/教程 - 使用ASP.net Web应用程序的signalR 1.1.3教程(.NET Framework 4的最新signalR版本 - 不支持更高版本的signalR)。

如果你像我一样,你也应该毫无问题地在web应用程序中运行signalR,然后继续为网站实现相同的功能。在我的例子中,感谢LarsHöppner,所有这些都是关于引用我的JavaScript文件的。

这些行

<script src="/Scripts/jquery-1.6.4.min.js" ></script>
<script src="/Scripts/jquery.signalR-1.1.3.js"></script>
<script src="/signalr/hubs"></script>

应该只是

<script src="Scripts/jquery-1.6.4.min.js" ></script>
<script src="Scripts/jquery.signalR-1.1.3.js"></script>
<script src="signalr/hubs"></script>