有时我的signalr .net客户端的InvokeAsync方法有效,有时却无效。
在我的startup.cs中,我有一个.net核心2.2项目,该项目具有Azure SignalR服务中心,我将其设置如下:
services.AddSignalR(o => o.EnableDetailedErrors =
true).AddAzureSignalR(connstring);
app.UseAzureSignalR(route =>
{
route.MapHub<FooBarHub>("/foobarhub");
});
我有一个.net客户端项目,它是一个Winform应用程序(.net 4.6.1),它建立了如下连接:
connection = new HubConnectionBuilder().WithUrl($"
{serviceHost}/AgentHub").Build();
启动时,我打电话:
await connection.StartAsync();
并可以看到状态为已连接。
然后我想从客户端调用集线器上的方法,以便在客户端中执行此操作:
string myIdString = await connection.InvokeAsync<string>
("RegisterSignalRId", foobarId);
应该在我的服务器中心中点击我的方法:
public string RegisterSignalRId(string foobarId)
{
myService.RegisterSignalRId(this.Context.ConnectionId, foobarId);
return this.Context.ConnectionId;
}
我的问题是,有时当我启动Winform应用程序时,我将myIdString设置为null,它根本没有达到服务器中心方法中的断点,但是有时它确实起作用,并且我得到了真实的/正确的值。
我不能始终如一地使它工作或失败,这似乎是随机的。
答案 0 :(得分:1)
所以答案是我已经签入(以进行源代码控制)我的azure服务的连接字符串,因此其他开发人员也正在使用它,并将他们的API服务版本指向该azure服务。因此,当我运行我的代码时,有时azure会使用新方法打入我的API服务,并且会起作用,有时它会打入其他人的api,因此失败,因为他们的代码中没有新方法。