asp.net-mvc – IE 11 SignalR不工作
使用signalR与IE 11时发生奇怪的行为。场景:
我们有一些调度器类型的功能,其中调度程序执行一些操作,而另一个用户可以看到更新(查询)。发送的参数可以通过罚款在IE客户端进行更新,而无需打开开发者控制台。 但是一种方法不起作用(performUpdate – 获取查询结果 – 这是一个服务器>客户端调用,而不是客户端>服务器>客户端) – 永远不会被调用。当开发者控制台打开时,它只能被呼叫。 这是我试过的: Why JavaScript only works after opening developer tools in IE once? SignalR : Under IE9,messages can’t be received by client until I hit F12 !!!! SignalR client doesn’t work inside AngularJs controller 一些代码片段 调度方 在下拉式更改中,我们获得当前选定的值,并通过电线发送更新。 (这工作正常)。 $('#Selector').on('change',function(){ var variable = $('#SomeField').val(); ... liveBatchHub.server.updateParameters(variable,....); }); 服务器端 当调度程序搜索时,我们有一些服务器端代码发送搜索已经运行的通知,并告诉客户端提取结果。 public void Update(string userId,Guid bId) { var context = GlobalHost.ConnectionManager.GetHubContext<LiveBatchViewHub>(); context.Clients.User(userId).performUpdate(bId); } 客户端(实时更新查看器) 除非开发工具是开放的,否则永远不会被调用 liveBatchHub.client.performUpdate = function (id) { //perform update here update(id); }; 编辑 一些更多的信息可能是有用的(我不知道为什么它有所作为),但这只是似乎发生在我做服务器>客户端电话。调度员正在更改搜索参数时,更新是客户端>服务器>客户端或调度客户端>服务器>查看器 – 客户端,似乎工作。点击搜索后,搜索管道中的服务将调用performUpdate服务器端(服务器>查看器 – 客户端)。不知道这是否重要? 编辑2&最终解决方案 眼睛血腥,我意识到我没有提出这个问题的一个关键部分:我们在这个页面上也使用了角度。猜猜我一直在盯着它太久了,让对方遗憾。我给了JDupont答案,因为他在正确的轨道上:缓存。但是没有jQuery的ajax缓存,有角度的$ http。 就这样没有人必须花费几天/几晚的时间将桌面敲响头,最终的解决方案是使用角度$ http禁用ajax调用缓存。 取自here: myModule.config(['$httpProvider',function($httpProvider) { //initialize get if not there if (!$httpProvider.defaults.headers.get) { $httpProvider.defaults.headers.get = {}; } // Answer edited to include suggestions from comments // because previous version of code introduced browser-related errors //disable IE ajax request caching $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon,26 Jul 1997 05:00:00 GMT'; // extra $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; $httpProvider.defaults.headers.get['Pragma'] = 'no-cache'; }]); 解决方法
过去我在IE中经历过类似的行为。我可能知道你的问题的解决方案。
IE默认缓存一些ajax请求。你可能想尝试全球关闭它。检查出来:How to prevent IE from caching Ajax with jQuery 基本上你会全局地切换这样的: $.ajaxSetup({ cache: false }); 或者像这样一个特定的ajax请求: $.ajax({ cache: false,//other options... }); 我的GET请求缓存有一个类似的问题。除非开启工具是开放的,否则我的更新功能只会触发一次。当它打开时,不会发生缓存。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 新浪出输入法了,深蓝词库转换更新到1.3.1——增加对新浪拼
- asp.net-core – 如何在ApplicationStarted事件中优雅地中止
- Asp.Net MVC 3 JSON模型绑定无法正常工作
- asp.net – 通过Ajax Post – MVC3更新模型更改视图
- 如何使用MSBuild发布Asp.NET Web应用程序?
- asp.net-mvc-3 – 用于生成单行文本的Razor
- asp.net-mvc – 在asp.net mvc actionlink中传递嵌套属性
- asp.net – JQuery Live()无效
- ASP.net图表控件:隐藏除数据点之外的所有行(轴等)
- asp.net – 您在实施/使用WebDAV方面有哪些经验?