从另一台计算机发出跨域SignalR时不起作用

时间:2019-05-13 11:17:14

标签: signalr

我在单独的域中有两个MVC应用程序,其中一个(csm.mywebsite.com)使用signalR在另一个(ess.mywebsite.com)上调用客户端函数。当我在同一台开发机上使用两个浏览器对其进行测试时,它可以正常工作。但是,当我尝试从另一台计算机在一台计算机上调用该函数时,该函数将失败,并且什么也不会发生。两种开发机器都在TFS上具有这些应用程序。

cp.mywebsite.com中的

服务器端配置代码:

public class NotificationHub : Hub
{
}

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration
            {
            };
            map.RunSignalR(hubConfiguration);
        });

    }
}

我使用以下代码从服务器调用客户端功能:

GlobalHost.ConnectionManager.GetHubContext<NotificationHub> 
().Clients.User(userID.ToString()).SendMessage(message, "CSM");

和另一域(ess.mywebsite.com)上的客户端

$(document).ready(function () 

    $.getScript('http://csm.mywebsite.com/Scripts/jquery.signalR-2.4.1.min.js', function () {
        $.getScript('http://csm.mywebsite.com/signalr/hubs', function () {

            $.connection.hub.url = 'http://csm.mywebsite.com/signalr';
            var notificationHub = $.connection.notificationHub;
            console.log(notificationHub);

            $.connection.hub.start();

            notificationHub.client.sendMessage = function (content, system) {

               alert(content);
            };
        });
    });

});

1 个答案:

答案 0 :(得分:0)

我不好,我忽略了每个开发机器都将项目源存储在本地的事实。然后,通常不让客户订阅其他计算机。因此,无法从其他计算机调用客户端功能。我将最新更新部署到服务器,一切正常。