我在单独的域中有两个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);
};
});
});
});
答案 0 :(得分:0)
我不好,我忽略了每个开发机器都将项目源存储在本地的事实。然后,通常不让客户订阅其他计算机。因此,无法从其他计算机调用客户端功能。我将最新更新部署到服务器,一切正常。