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请求缓存有一个类似的问题。除非开启工具是开放的,否则我的更新功能只会触发一次。当它打开时,不会发生缓存。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在ASP.NET MVC视图中访问路由参数?
- asp.net-mvc – ASP.NET MVC 3 Razor模板VS RenderPartial
- asp.net-mvc – 在实体框架中使用存储过程
- asp.net-mvc – EF实体与服务模型与查看模型(MVC)
- asp.net – 在将其上传到服务器之前,在客户端进行跨浏览器检
- 如何使用ASP.NET身份实现多租户用户登录
- asp.net-mvc – 奇怪的MVC问题
- asp.net – 使用Ajax,在服务器或客户端生成额外的标记是否更
- asp.net – 在与页面相同的文件夹中使用用户控件
- 谈谈.NET Core中基于Generic Host来实现后台任务
