SignalR-无法获取属性'客户端'的未定义引用或null引用
SignalR - Unable to get property 'client' of undefined or null reference
我在现有的Web应用程序中使用SignalR时遇到问题。我收到javaruntime异常"Unable to get property‘client’of undefined or null reference",因为当我尝试从$.connection对象检索集线器时,它返回null。
在我发布代码之前,我想提供一些背景和一些我已经尝试过的东西:-如果我在本地运行这个项目,一切都会很好。只有当我将项目部署到IIS位置时,我才会遇到问题。-我已经验证了我的集线器名称是正确的驼色大小写。同样,它在本地运行良好,并且只有在我将项目部署到IIS之后才会抛出错误。-我已经确认我的所有javascript都已成功加载。JQuery库只被引用一次,并且加载良好。signalRjavascript和动态创建的signal/hubs也是如此。-如果我创建了一个新项目,并在现有的web应用程序下运行与作为web应用程序运行的新web应用程序相同的代码,那么一切都会正常工作(只在新项目中使用相同的代码)。
有人对问题出在哪里有什么想法吗?
集线器代码:
Imports Microsoft.AspNet.SignalR
Public Class TestHub
Inherits Hub
Public Sub Connect()
Try
Clients.Caller.onConnect(Context.ConnectionId)
Catch ex As Exception
LogMessage("ERROR Connecting to Hub", 0, 0, "ERROR")
End Try
End Sub
End Class
网页代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-1.1.3.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="signalr/hubs"></script>
<script type="text/javascript">
$(function () {
// Declare a proxy to reference the hub.
var thub = $.connection.testHub;
registerClientMethods(thub);
// Start Hub
$.connection.hub.start().done(function () {
registerEvents(thub);
thub.server.connect();
alert('connected!');
});
});
function registerClientMethods(thub) {
thub.client.onConnect = function (id) {
$('#lblConnectionID').text(id);
}
}
function registerEvents() {
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblConnectionID" runat="server" />
</div>
</form>
</body>
</html>
Global.asax代码:
Imports System.Web.Routing
Imports Microsoft.AspNet.SignalR
Public Class Global_asax
Inherits System.Web.HttpApplication
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Fires when the application is started
Try
' Register the default hubs route: ~/signalr/hubs
RouteTable.Routes.MapHubs()
Catch ex As Exception
LogMessage("ERROR initializing SignalR: " & ex.Message, 0, 0, "ERROR")
End Try
End Sub
...
所以现在,当我转到我的页面SignalRTest.aspx时,行thub.client.onConnected=抛出一个javascript错误:"无法获取未定义或空引用的属性‘client’"
有人知道是什么原因造成的吗?非常感谢。
[EDIT]-在将工作信号器/hubs.js文件与非工作文件进行比较后,我发现缺少以下部分:
proxies.testHub= this.createHubProxy('testHub');
proxies.testHub.client = { };
proxies.testHub.server = {
connect: function () {
return proxies.transactionHub.invoke.apply(proxies.testHub, $.merge(["Connect"], $.makeArray(arguments)));
}
};
你有没有想过为什么这不会被包含在signaler/hubs.js文件中?我正在调用Global.asax…中的MapHubs()
谢谢!
[FIX]我删除了目标web应用程序的Bin文件夹,然后重新部署。仍然不确定有什么不同。所有.DLL都是相同的。不过现在它起作用了。古怪的
从VS 2012发布到IIS 7.5后,我在尝试调试以运行web应用程序时遇到此错误。经过一番努力,我意识到问题在于我在部署时没有更改jquery脚本和信号器路径。
为了解决这个问题,我不得不将虚拟目录名("TestingChat")添加到jquery和signaler的脚本标记的路径中。
例如:
<script src="Scripts/jquery-1.8.2.min.js" ></script>
<script src="/signalr/hubs"></script>
至
<script src="/TestingChat/Scripts/jquery-1.8.2.min.js" ></script>
<script src="TestingChat/signalr/hubs"></script>
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 在gump和nodejs中使用Typescript时,未定义对require和exports的引用
- gmaps4rails 2.4.6未捕获引用错误:未定义Gmaps
- 未捕获引用错误:未定义validateform
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- $未定义-未捕获引用错误
- Sitecore”;未捕获引用错误:未定义MultilistWithSearch;
- Wordpress:未捕获引用错误:未定义速度
- Node.js引用错误:未定义类名
- 未捕获的引用错误:未定义<映射键>
- Javascript错误:未捕获引用错误:未定义编辑
- jQuery$(this)引用未定义
- 无法获取属性'字符串'的未定义或null引用IE 11 ASP.NET
- 未捕获引用错误:未定义PrintThisPage
- Node.js-socket.io-对io.sockets的引用突然未定义
- 引用错误:在尝试使用ajax发送数据时未定义
- 在JavaScript中引用未定义的变量时,如何避免出现错误
- 在AJAX/JavaScript中,如何可能引用未定义的变量(匿名函数)
- Edge浏览器中window.open()返回的引用未定义