我正在构建一个可与SignalR HUB进行交互的Chrome扩展。从Chrome扩展连接到SignalR - error:方法无法解析
集线器工作正常,我的本地文件是用代理连接创建的。但是,我不能,因为它不是在同一个项目,所以我不得不把它定义自己使用Chrome扩展程序的代理连接:
var connection = $.hubConnection('http://localhost:61xxx/signalr/hubs', {useDefaultPath: false});
var roomIndexHubProxy = connection.createHubProxy('roomIndexHub');
这工作得很好,如果我使用断点的服务器OnConnected
上方法它会触发,我也看到说连接的日志已经建立。但是,当我尝试运行我自己的功能,我得到这个错误(在客户端):
SignalR: 'test' method could not be resolved. No method found with that name. at Microsoft.AspNet.SignalR.Hubs.NullMethodDescriptor.b__0(IHub emptyHub, Object[] emptyParameters) at Microsoft.AspNet.SignalR.Hubs.HubDispatcher.Incoming(IHubIncomingInvokerContext context) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1.ConfiguredTaskAwaiter.GetResult() at Microsoft.AspNet.SignalR.TaskAwaiterHelper.PreserveCultureAwaiter
1.GetResult() at Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.<>c__DisplayClass1.<b__0>d__3.MoveNext().SignalR: roomindexhub.test failed to execute. Error: 'test' method could not be resolved. No method found with that name.
这是我的客户端代码:
var connection = $.hubConnection('http://localhost:61xxx/signalr/hubs', {useDefaultPath: false});
var roomIndexHubProxy = connection.createHubProxy('roomIndexHub');
connection.logging = true;
connection.start().done(function() {
// Wire up Send button to call RoomIndexHubProxy on the server.
console.log('Hub has started');
$("#signalr").click(function(){
roomIndexHubProxy.invoke('test');
});
});
connection.error(function (error) {
console.log('SignalR error: ' + error)
});
服务器端代码(虽然很简单) :
public class RoomIndexHub : Hub
{
public RoomIndexHub(){}
public override Task OnConnected()
{
return base.OnConnected(); // this works!
}
internal void test()
{
int i = 0; // this doesn't work
}
}
}
正如我在写那些我看到这个'在Microsoft.AspNet.SignalR.Hubs.NullMethodDescriptor.b__0(IHUB
线但是我不知道为什么,因为我做了定义这种情况正在发生:
var roomIndexHubProxy = connection.createHubProxy('roomIndexHub');
我将非常感谢您的帮助!
'内部类型或成员只能在同一个程序集中的文件中访问 - 换言之,外部不可访问。虽然我不知道任何C#。 – wOxxOm
哦,叹了口气,这很容易..有时你需要知道在哪里看我猜... 我很专注于客户端这个错误,我错过了这个简单的事情。 非常感谢! – LiranBo