我在现有Web应用程序中使用SignalR时遇到问题.我收到javaruntime异常“无法获取未定义或空引用的属性’客户端’,因为当我尝试从$.connection对象检索我的集线器时,它返回null.
在发布我的代码之前,我想提供一些背景和一些我已经尝试过的东西:
– 如果我在本地运行项目,一切正常.只有当我将项目部署到IIS位置时才会出现问题.
– 我已经验证我的集线器名称是正确的驼峰套.同样,它在本地工作正常,并且只有在我将项目部署到IIS后才会抛出错误.
– 我已经确认我的所有javascript都已成功加载. JQuery库只引用一次,并且加载正常. signalR javascript和动态创建的信号器/集线器也是如此.
– 如果我创建一个新项目,并运行与在现有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","ERROR")
End Try
End Sub
End Class
网页代码:
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,"ERROR")
End Try
End Sub
...
所以现在,当我转到我的页面SignalRTest.aspx时,thub.client.onConnected = …行引发了一个javascript错误:“无法获取未定义或空引用的属性’客户’”
有谁知道可能导致这种情况的原因?
谢谢.
[编辑] – 将工作信号器/ 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)));
}
};
有关为什么这不会包含在signalr / hubs.js文件中的任何想法?我在Global.asax中调用MapHubs()…
谢谢!
[固定]
我删除了目标Web应用程序的Bin文件夹,然后重新部署.仍然不确定有什么不同.所有.DLL都是一样的.它现在有效.奇.
最佳答案