Tag: signalr

entity framework“意外连接状态”例外

经过三个小时的调试和搜索,我希望有人在这里有答案。 如果我连续快速调用以下函数(例如,相隔<0.1秒),实体框架(使用MySQL)会抛出以下异常。 System.InvalidOperationException:意外的连接状态。 使用包装提供程序时,请确保在包装的DbConnection上实现StateChange事件。 但是,有时function没有任何问题。 在第一个ToList()调用上抛出exception: void InsertOrUpdateMaterials(List materials) { var id = GetUserId(); var materialIds = materials.Select(x => x.MaterialId).ToList(); // Remove old materials from DB var oldMaterials = Db.Materials.Where(p => p.CreatedBy == id && materialIds.Contains(p.MaterialId)).ToList(); // exception Db.Materials.RemoveRange(oldMaterials); Db.SaveChanges(); // Replace previous materials with the new ones in list Db.Materials.AddRange(materials); Db.SaveChanges(); } 奇怪的是,这个错误从未发生在开发服务器上,所以我调查了可能的配置问题无济于事。 有时,Entity […]

如何通过SignalR传递复杂对象?

SignalR上有一个很好的教程,解释了如何将.NET对象作为参数传递给Javascript,反之亦然。 在这种情况下,它传递一个ChatMessage对象。 但是,该教程解决了一个非常简单的对象。 我想看看如何在Javascript中处理复杂的.NET对象(其他对象作为属性)。 例如,请考虑以下对象: class Master { public List QuarterHours { get; set; } public List Books { get; set; } public int EndDay { get; set; } public int StartDay { get; set; } } class QuarterHour { public MinuteInstance Minute {get; set;} public int HourStart { get; set;} } class MinuteInstance { […]

SignalR组 – 在客户端或服务器上处理过滤?

我一直在阅读有关SignalR集线器和组的相当数量。 特别是,我注意到你无法计算特定组中的连接数。 是否在客户端或服务器上处理组的过滤? 如果服务器,为什么SignalR不能公开计数? 如果在客户端,有没有办法只向特定客户端发送消息?

什么是SignalR的浏览器兼容性?

我在网上找到的最多的是SignalR FAQ,其中声明SignalR在IE6 / 7中不起作用。 但是,出于法律原因,我需要向客户提供支持的浏览器列表。 是否有针对SignalR的测试浏览器列表? 谢谢!

SignalR IOS客户端,Web Socket传输无法从服务器调用该方法

我使用SignalR-ObjC Client在我的IOS应用程序和.Net服务器之间提供通信。 我可以连接longpulling并从自托管跨域服务器调用方法,没有任何错误。 但由于我的应用程序需求,我必须使用WebSocket。 我有一个Singleton Manager,如: @implementation SignalRManager static int reconnectingTry; + (id)sharedManager { static SignalRManager *sharedHttpManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedHttpManager = [[self alloc] init]; sharedHttpManager.hubConnection = [SRHubConnection connectionWithURL:@”http://xxx:8080/signalr”]; sharedHttpManager.proxy = [sharedHttpManager.hubConnection createHubProxy:@”myhub”]; }); return sharedHttpManager; } +(SRHubProxy *)proxy { return [[SignalRManager sharedManager] proxy]; } +(SRHubConnection *)connection { return [[SignalRManager sharedManager] […]

Async MVC.NET操作方法阻止任何其他HTTP请求

(我为改变问题而道歉) 以下代码片段来自MVC.NET控制器(.NET:v4.5; AspNet.MVC:v5.2.3)。 调用LongOperation后,它: 产生一个过程 等待完成 监视一些LOG文件 使用SignalR从LOG文件通知浏览器进度 (为简单起见,我省略了代码) 所有这一切都有效,只有在LongOperation运行时,控制器才会处理其他 HTTP请求。 在LongOperation完成后处理它们并且action方法将结果返回给AJAX调用。 我搞砸了什么? 先感谢您。 更新(对于@angelsix评论):这是一个简化的设置: 我已根据建议删除了async / await 根据建议添加断点 已validation它们如上所述被击中 基本上:相同的结果,请参阅console.log-ed文本和时间戳欢迎来自社区的任何帮助。 先感谢您! GUI和日志 Controller中的操作方法 [AjaxOnly] public ActionResult _RunLongOperation(string hubId) { try { for (int i = 0; i < 10; i++) { Thread.Sleep(1000); ProgressNotifierHub.Notify(hubId, string.Format("Notification from _RunLongOperation {0}", i)); } return new HttpStatusCodeResult(HttpStatusCode.OK, "_RunLongOperation : […]

部署自托管SignalR

我已经基于这个SignalR控制台应用程序示例创建了一对基于C#的控制台应用程序 。 这在我的本地PC上非常出色,我现在已经将服务器应用程序(以及bin / Release文件夹中的所有文件)复制到我的服务器上。 当我运行服务器应用程序时,它很乐意坐在那里听“ http://www.redacted.com:8088/ ”。 在客户端应用程序中,我更改了: var _connection = new HubConnection(“http://127.0.0.1:8088/”); 至: var _connection = new HubConnection(“http://www.redacted.com:8088/”); 但是,当我尝试启动连接时,我现在收到503 Server Unavailable错误。 我是SignalR的新手,并没有设法找到一个关于部署的体面教程(主要是因为根据我的猜测,可能有很多不同的方法可以完成)。 所以我的问题是: 我是否需要在IIS中设置任何内容才能使其工作(请记住,我不是在考虑这是基于Web的,只是控制台应用程序到控制台应用程序),或者只是运行服务器exe并打开端口是可以的吗? 我的服务器正在运行Windows Server 2012,我已将我的exe添加到允许建立连接的应用程序列表中,并为端口8088添加了传入规则,还有什么我需要做的才能看到我的客户?

构建SignalR / Knockout仪表板,保证消息传递

我正在考虑使用实时消息替换我们公司的监控仪表板。 旧概念: 在我们公司,我们有一个仪表板,显示超过700台物理机器的(相当详细的)状态,以及添加的元信息。 它是由我的一位同事在ASP.NET Web Forms(我不喜欢)中大约1.5年前构建的,以使调度员能够协调我们的技术人员应该去解决问题的位置(这些机器位于不同的地理位置) )。 不幸的是,该应用程序使用30秒的完整页面自动刷新,后面有一个大查询。 它很慢,它完全重置你的视图(正如我所说,仪表板包含超过700多台机器)。 我个人想改变这个。 使用起来非常烦人。 我们的调度员已经学会了接受这一点,但我认为他们应该得到更好的待遇。 新概念: 我想在新仪表板上显示相同的内容,但需要实时更新和“消息”日志。 在我们公司,我们在MS堆栈上工作了大约90%,所以我计划使用ASP.NET MVC,SignalR,SQL Server和Knockout。 我现在有什么 看看这个简单的图表: +—-+ +—-+ +—-+ +—-+ +—-+ +—-+ +—-+ | PC | | PC | | PC | | PC | | PC | | PC | | PC | … … +–+-+ +–+-+ +-+–+ +–+-+ +–+-+ +–+-+ […]

如何在长服务器进程中显示信息丰富的实时进度数据

我有这么长的过程可能需要1个小时。 这个过程包括每年运行的许多步骤。我的主要问题是: 如何在此过程中为最终用户提供信息丰富的实时进度,而不仅仅是虚拟装载栏。 int index = Convert.ToInt32(e.CommandArgument); bool done = false; int res = -1; int fromVal = int.Parse(gv_balance.Rows[index].Cells[0].Text); int toVal = int.Parse(gv_balance.Rows[index].Cells[1].Text); int finMonth = 1; int finYear = 0; int EndServ = 0; int calcYear = int.Parse(gv_balance.Rows[index].Cells[2].Text); int total; total = ((toVal – fromVal) + 1); string msg = string.Empty; int confirm = […]

忽略New Relic中持久的SignalR连接

我应该在哪里调用SignalR集线器中的NewRelic.Api.Agent.NewRelic.IgnoreApdex()或NewRelic.Api.Agent.NewRelic.IgnoreTransaction() ,以防止长时间运行的持久连接使我的应用程序监控日志蒙上阴影?