2

我正在使用 SignalR 制作应用程序。

集线器放置在一台运行带有 IIS 8 的 Windows Server 2012 的服务器上。 http://mentor.cloudapp.net/mass/rexona/previa/signalr/hubs

客户在这里: http://massdeveloperstage.com/Rexona/Site/colombia/Previa/Match?matchId= 6F318A29-3400-444B-95D9-7EC41A7AD2D4

Signalr 设置如下所示:

var match;
    $(document).ready(function () {
        $.connection.hub.loging = true;
        match = $.connection.match;

    match.client.addMessage = function (message) {
        var vm = {
            avatar: message.ProfileImageLocation,
            content: message.Text,
            user: message.UserScreenName,
            obj: JSON.stringify(message)
        };
         alert(vm.obj);
   }
  $.connection.hub.url = 'http://mentor.cloudapp.net/mass/rexona/previa/signalr';

    $.connection.hub.start().done(function () {
        match.server.addToGroup("97-987-PP");
    }).fail(function () {
          //alert("fail!");
    });

一切都在 Chrome、FF、Opera 和 IE10 中完美运行,但是当使用 IE9 访问时,应用程序失败。

我在连接设置中遗漏了什么吗?我是否需要在服务器上启用其他功能才能使用 IE9?

谢谢。

4

1 回答 1

1

我认为您正在尝试在那里进行 CORS(跨站点原始共享)。它与 IE9 的工作方式不太一样,请查看此处获取详细讨论,并查看microsoft page了解确切的限制。它是使用 XDomainRequest 自定义对象而不是 XMLHttpRequest 完成的,并且...

  1. 必须使用 HTTP 或 HTTPS 协议访问目标 URL
  2. 必须仅使用 HTTP 方法 GET 和 POST 访问目标 URL
  3. 不得将自定义标头添加到请求中
  4. 请求的 Content-Type 标头仅支持 text/plain(不支持 soap、json 或编码数据类型!)
  5. 不会随请求发送任何身份验证或 cookie
  6. 针对 Intranet URL 的请求只能从 Intranet 区域发出
  7. 请求必须针对与托管页面相同的方案

编辑:我自己实际上从未使用过 SignalR,这个答案通常基于 CORS。根据@stricq 的评论,IE 需要启用长轮询才能与 SignalR 一起使用,如此所述。

于 2012-11-26T21:39:28.120 回答