Signalr 具有MVC4的信号器,无法从控制器上的操作推送

Signalr 具有MVC4的信号器,无法从控制器上的操作推送,signalr,Signalr,我有一个MVC4应用程序设置来测试信号器推送通知,但它不工作。(我已经在MVC官方网站上测试了聊天应用程序,它工作得很好,问题是当我从controller推送消息时)。请有人帮我做这件事 (1) 我有如下几点建议: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.Owin; using Owin; namespace MvcApplicati

我有一个MVC4应用程序设置来测试信号器推送通知,但它不工作。(我已经在MVC官方网站上测试了聊天应用程序,它工作得很好,问题是当我从controller推送消息时)。请有人帮我做这件事

(1) 我有如下几点建议:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Owin;
using Owin;

namespace MvcApplication3
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }

}

(2) 枢纽类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

namespace MvcApplication3
{
    [HubName("notificationHub")]
    public class NotificationHub : Hub
    {

    }
}

(3) 我在控制器上做的是

public ActionResult Index()
{
    SendMessage("This should be displayed on client !!");
    return View();
}

private void SendMessage(string message)
{
    var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
    context.Clients.All.viewMessage(message);
}
public ActionResult Index()
{
SendMessage(“这应该显示在客户端!!”;
返回视图();
}
私有void发送消息(字符串消息)
{
var context=GlobalHost.ConnectionManager.GetHubContext();
context.Clients.All.viewMessage(message);
}

(4) 最后在索引视图上

<style type="text/css">
    #span-display
    {
        color: red;
        font-size: 16px;
    }
</style>

<span id="span-display"></span>

@section scripts
{
    <script src="~/Scripts/jquery.signalR-2.0.1.min.js"></script>
    <script src="~/signalr/hubs"></script>

    <script type="text/javascript">
        $(function () {

            var notificationhub = $.connection.notificationHub;

            notificationhub.client.viewMessage = function (message) {

                $('#span-display').html(message);
            };

            $.connection.hub.start();

        });

    </script>
}

#跨度显示
{
颜色:红色;
字体大小:16px;
}
@节脚本
{
$(函数(){
var notificationhub=$.connection.notificationhub;
notificationhub.client.viewMessage=函数(消息){
$('#span display').html(消息);
};
$.connection.hub.start();
});
}
请帮帮我,伙计们,我快到最后期限了,解决不了这个问题。请原谅,如果这是一个简单的事情,但我是新的这项技术


提前感谢:-)

我使用几乎相同的代码进行了测试,它是有效的,我发现的唯一区别是在startup类中,我也有:

[assembly: OwinStartup(typeof(SignalR_Example.Hubs.Startup))]
namespace SignalR_Example.Hubs
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    }
}

尝试使用第一行更改我的值和您的值,另一件重要的事情是JS,您是否检查了浏览器控制台?是否有任何错误或类似的问题?

您可以比“它不工作”更具体一些吗?这意味着消息没有像我预期的那样显示在span上:-(是否
message
包含某些内容?是否调用了
viewMessage
函数?我正在调用索引操作SendMessage中控制器中的方法(“这应该显示在客户端!!”);我找到了根本原因,无论如何,谢谢你们的帮助。这是因为当我从控制器操作调用视图时,视图将初始化,然后只有客户机方法被初始化,但那时服务器调用已经在客户机上进行,而没有方法,所以我希望这就是它不起作用的原因。:D