Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 升级到信号器1.0.0 Alpha 2时未触发OnConnected任务_C#_Asp.net_Signalr - Fatal编程技术网

C# 升级到信号器1.0.0 Alpha 2时未触发OnConnected任务

C# 升级到信号器1.0.0 Alpha 2时未触发OnConnected任务,c#,asp.net,signalr,C#,Asp.net,Signalr,我最近刚刚尝试升级到signalR 1.0.0 Alpha2。我浏览了维基,更改了我认为需要更改的内容,并确保程序集都加载了新文件。这是我的js: $(function () { var Chat = $.connection.ChatHub; ... $.connection.hub.start( .done(function(){ alert("Now connected!"); }) .fail(function(){ alert("Could no

我最近刚刚尝试升级到signalR 1.0.0 Alpha2。我浏览了维基,更改了我认为需要更改的内容,并确保程序集都加载了新文件。这是我的js:

$(function () {
    var Chat = $.connection.ChatHub;
    ...
    $.connection.hub.start(
    .done(function(){ alert("Now connected!"); })
    .fail(function(){ alert("Could not Connect!"); });
});
这是我的集线器类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR.Hubs;
using MyProject.Domain.Abstract;
using Microsoft.AspNet.SignalR;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Web.Security;
using MyProject.Domain.Entities;
using System.Web.Script.Serialization;
using System.Text.RegularExpressions;
using MyProject.Domain.Concrete;
using MyProject.Domain.Helpers;
using System.Web.Mvc;

namespace MyProject.Web.RealTime
{
    public class ChatMessage
    {
        public string ChatId { get; set; }
        public string Message { get; set; }
        public string FullName { get; set; }
        public string Time { get; set; }
        public string School { get; set; }
        public string Major { get; set; }
        public string ImageUrl { get; set; }
    }
   [HubName("ChatHub")]
    public class Chat : Hub
    {
        //Initialize Repoisotries 
        private IProfileRepository profileRepository;
        private ISiteDataRepository siteDataRepository;
        private IChatRepository chatRepository;
        private IOnlineUserRepository onlineUserRepository;
        private IRecentActivityRepository recentActivityRepository;


        MembershipUser MainUser = Membership.GetUser();
        UserProfile MainProfile;
        //In memory objects
        //public static Dictionary<Guid, List<string>> onlineUsers = new Dictionary<Guid, List<string>>();


        //Constructor Injection for profile repository and site data repository
        public Chat(IProfileRepository repo, ISiteDataRepository siteRepo, IChatRepository chatRepo, IOnlineUserRepository onlineUserRepo, IRecentActivityRepository recentActivityRepo)
        {            
            profileRepository = repo;
            siteDataRepository = siteRepo;
            chatRepository = chatRepo;
            onlineUserRepository = onlineUserRepo;
            MainProfile = profileRepository.GetProfile((Guid)MainUser.ProviderUserKey);
            recentActivityRepository = recentActivityRepo;
        }



        public override Task OnDisconnected()
        {

            disconnectUser();
            List<ContactItem> contacts = profileRepository.GetFollowedOnlineContacts(MainProfile.UserId);
            foreach (ContactItem ci in contacts)
            {
                Clients.Group(Convert.ToString(ci.ChatId)).onlineUserHandler(Convert.ToString(MainProfile.ChatId), false);
            }
            return base.OnDisconnected();
        }
        public override Task OnReconnected()
        {
            connectUser();
            List<ContactItem> contacts = profileRepository.GetFollowedOnlineContacts(MainProfile.UserId);
            foreach (ContactItem ci in contacts)
            {
                Clients.Group(Convert.ToString(ci.ChatId)).onlineUserHandler(Convert.ToString(ci.ChatId), true);
            }
            return base.OnReconnected();
        }
        public override Task OnConnected()
        {
            Debug.WriteLine("Connected``````````````````````````````````");
            connectUser();
            List<ContactItem> contacts = profileRepository.GetFollowedOnlineContacts(MainProfile.UserId);
            foreach (ContactItem ci in contacts)
            {
                Clients.Group(Convert.ToString(ci.ChatId)).onlineUserHandler(Convert.ToString(MainProfile.ChatId), true);
            }
            return base.OnConnected();
        }
        private void connectUser()
        {
            if (onlineUserRepository.ConnectUser(MainProfile.UserId, Context.ConnectionId))
            {
                Groups.Add(Context.ConnectionId, Convert.ToString(MainProfile.ChatId));
            }
        }
        private void disconnectUser()
        {
            onlineUserRepository.DisconnectUser(MainProfile.UserId, Context.ConnectionId);
            Groups.Remove(Context.ConnectionId, Convert.ToString(MainProfile.ChatId));
        }





    }
}

在启动对方法的中心引用之前,应添加JavaScript:

$.connection.yourhub.client.connected = function () { };
$.connection.yourhub.client.disconnected = function () { };

问题是因为我使用的是未更新版本的NinjectDependencyResolver,我不确定他们是否更新了它。事实上,我已经停止在hub类中同时使用依赖项注入,因为我无法让它工作。

我也遇到了这个问题,使用了一个非常简单的示例(基本上只有OnXXXX方法,其他什么都没有。框架的其余部分运行良好,只有这些不会启动的OnXXX方法。您有订阅吗?alpha的语法已更改,因此您可能根本不会订阅任何集线器方法。我没有订阅,这些是新版本中必需的吗?没有,它始终是必需的。@dfowler我发现是我的构造函数导致了这个问题,因为它没有被正确注入。我在你的博客文章中读到评论,你正在为signalr开发新的ninject更新,如果我去掉注入,只是在hub中实例化类而不注入它,我会面临任何性能问题吗问题?目前,我的系统一次可能只有30-50人,因此负载不是很大,或者其他什么。我有一个直接来自浏览器的裸体javascript客户端,可以成功连接,但不会触发服务器端连接和断开连接的事件。添加这两行代码可以工作。奇怪的是,我的系统中不需要这两行代码signalrI的asp.net或blackberry实现正在
$.connection.hub.start().done(函数(){/*…*/})内分配我的集线器客户端回调;
函数。当我将它们移到函数外部,使它们在调用
$之前绑定。connection.hub.start
时,问题为我解决了。谢谢!我遇到了与尝试注入依赖项相同的问题,但我没有正确设置IOC。
$.connection.yourhub.client.connected = function () { };
$.connection.yourhub.client.disconnected = function () { };