微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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请求缓存有一个类似的问题。除非开启工具是开放的,否则我的更新功能只会触发一次。当它打开时,不会发生缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WPF...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这...
Some samples are below for ASP.Net web form controls:(from http://www.visualize.uk.com/resources/asp
问题描述: 对于未定义为 System.String 的列,唯一有效的值是(引发异常)。 For columns not defined as System.String, the only vali
最近用到了CalendarExtender,结果不知道为什么发生了错位,如图在Google和百度上找了很久,中文的文章里面似乎只提到了如何本地化(就是显示中文的月份)以及怎么解决被下拉框挡住的问题,谈
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence changed a lot since 1.1. Here is the order: App
静态声明: &#39; Style=&quot;position: relative&quot; AppendDataBoundItems=&quot;True&quot;&gt; (无 或 空 或
以下内容是从网络上搜集资料,然后整理而来的。不当之处,请不吝指教。(The following were from network, and edited by myself. Thanks in a
Imports System Imports System.Reflection Namespace DotNetNuke &#39;*********************************
Ok so you have all seen them: “8 million tools for web development”, “5 gagillion tools that if you