gpt4 book ai didi

c# - HubConnection.Start 仅在从单例对象调用时抛出错误

转载 作者:行者123 更新时间:2023-11-30 17:13:33 26 4
gpt4 key购买 nike

我用以下代码构建了一个通知系统:

class SignalRClient
{
HubConnection hubconn;
IHubProxy proxy;

public SignalRClient(string url)
{
hubconn = new HubConnection(url);
proxy = hubconn.CreateProxy("XXX.NotificationHub");
hubconn.Start().Wait();
}

public void SendMessage()
{
proxy.Invoke("LiveNotify", new { Application = "SRWinClient", Server = Environment.MachineName, Message = "This is a test", ImgId= 2 });
}
}

当我从测试 Windows 窗体应用程序(单击按钮)触发它时效果很好,但是当我从我拥有的单例对象调用它时,它在 Start().Wait() 上失败。我复制粘贴了代码并检查了很多次以确保没有拼写错误。

这是我的通知单例。它所做的不仅仅是 SignalR 位。它更新数据库等,但这里是相关部分:

public class CDSNotifier
{
private static object mLock = new object();
private static CDSNotifier mnotifier = null;
private bool enableSignalRNotifications = false;
private SignalRNotifier snotifier;

private CDSNotifier()
{
NameValueCollection appSettings = ConfigurationManager.AppSettings;
try
{
enableSignalRNotifications = Convert.ToBoolean(appSettings["EnableSignalRNotifications"]);
}
catch { };

if (enableSignalRNotifications)
{
snotifier = new SignalRNotifier(appSettings["SignalRHubURL"]);
}
}

public static CDSNotifier Instance
{
get
{
if (mnotifier == null)
{
// for thread safety, lock an object when
lock (mLock)
{
if (mnotifier == null)
{
mnotifier = new CDSNotifier();
}
}
}
return mnotifier;
}
}
public void Notify(int applicationId, int? companyId, string message, NotificationType type, string server)
{
.....

try
{
if (enableSignalRNotifications)
snotifier.SendMessage(applicationId, message, type);
}
catch { }
}

我得到的异常:

System.AggregateException Message: One or more errors occured StackTrace: at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken) at System.Threading.Tasks.Task.Wait()

最佳答案

我终于明白了。我的通知系统是一个单独的库,我的可执行文件的 bin 没有获取 Newtonsoft.JSON dll。我将使用 nuget 的包添加到我的主要项目中,它非常有效。@M.Babcock 感谢您带领我朝着正确的方向前进。我查看了异常,但我看到的是“InnerExceptions”(带有 s)的异常,但没有任何信息。但是当我查看“InnerException”时,我发现了更多信息。

关于c# - HubConnection.Start 仅在从单例对象调用时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9636593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com