当我拨打WCF CallBack

时间:2015-08-21 08:47:17

标签: c# wcf asynchronous callback

我正在调用返回List的WCF回调服务。实际上,当我点击登录按钮时,我正在检查用户名和密码。如果正确,该方法将获取List并将其返回给客户端。

现在,如果我输入错误的用户名或密码错误,则会显示“无效的用户名/密码”消息。但是,当我尝试再次提供凭据时,它会冻结。它不会再次调用该方法。

我不知道问题出在哪里。我也启用了跟踪,但是第二次没有调用方法,因此跟踪文件中没有任何内容。

感谢您的帮助。

我正在调用这样的服务:

 InstanceContext context = new InstanceContext(this);
 LoginClient client = new LoginClient(context);
List<UserEN> result = client.Login(userLogin, ref message).ToList<UserEN>();

我的服务合同:

 [ServiceContract(CallbackContract = typeof(ISaadiqinCallback))]
    public interface ILogin
    {
        [OperationContract]
        List<UserEN> Login(UserEN _user, ref string message);
    }
    [ServiceContract]
    public interface ISaadiqinCallback
    {
        [OperationContract]
        void BroadcastToClient(List<UserEN> authorizationList);

        [OperationContract]
        void NotifyUser(string message);
    }

实现:

 public List<UserEN> Login(UserEN _user, ref string message)
            {
                List<UserEN> authorizationList = new List<UserEN>();
                if (!string.IsNullOrEmpty(_user._userName))
                {
                    try
                    { 
                       // string message = string.Empty;
                        lock (locker)
                        {
                            callback = OperationContext.Current.GetCallbackChannel<ISaadiqinCallback>();
                            //remove the old client
                            if (clients.Keys.Contains(_user._userName))
                                clients.Remove(_user._userName);
                            //Adding the clients with userName and callback channel
                            clients.Add(_user._userName, callback);
                            //Get the authorization list from database
                           authorizationList =  new LoginBal().Login(_user, ref message);

                            }
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
                return authorizationList;
            }

0 个答案:

没有答案