客户端在定阅接口中事件的时候,第一次会报身份验证失败错误,第二次报远程主机强迫关闭一个现有连接错误,请高手指点
附代码 
接口public delegate void ForGPRSGatewayDecodeDataHandLer(HLGpsClass.GpsDataArgs e,object sender);    public interface IGpsRemote
    {
        event ForGPRSGatewayDecodeDataHandLer OnForGPRSGatewayDecodeDataHandLerEvent;        void SendGPRSGatewayDecodeData(HLGpsClass.GpsDataArgs gpsDataArgs);
    }
工厂public event ForGPRSGatewayDecodeDataHandLer LocalForGPRSGatewayDecodeDataHandLerEvent;        public void ForServerBroadCasting(HLGpsClass.GpsDataArgs gpsDataArgs,object sender)
        {
            this.LocalForGPRSGatewayDecodeDataHandLerEvent(gpsDataArgs, sender);
        }        /// <summary>
        /// 表示远程对象无期限租用
        /// </summary>
        /// <returns></returns>
        public override object InitializeLifetimeService()
        {
            return null;
        }
远程对象public event ForGPRSGatewayDecodeDataHandLer OnForGPRSGatewayDecodeDataHandLerEvent;        public void SendGPRSGatewayDecodeData(HLGpsClass.GpsDataArgs gpsDataArgs)
        {
            if (OnForGPRSGatewayDecodeDataHandLerEvent != null)
            {
                ForGPRSGatewayDecodeDataHandLer tempEvent = null;
                foreach (Delegate del in OnForGPRSGatewayDecodeDataHandLerEvent.GetInvocationList())
                {
                    try
                    {
                        tempEvent = (ForGPRSGatewayDecodeDataHandLer)del;
                        tempEvent(gpsDataArgs, this);
                    }
                    catch
                    {
                        OnForGPRSGatewayDecodeDataHandLerEvent -= tempEvent;
                    }
                }
            }
        }
服务器public GPSRemoteObject.GpsRemote gpsRemoteObject = null;        private void Form1_Load(object sender, EventArgs e)
        {
            BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
            BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();            serverProvider.TypeFilterLevel = TypeFilterLevel.Full;            IDictionary props = new Hashtable();            props["port"] = 8081;
            TcpChannel tcpChannel = new TcpChannel(props, clientProvider, serverProvider);            gpsRemoteObject = new GPSRemoteObject.GpsRemote();            ObjRef objRef = RemotingServices.Marshal(gpsRemoteObject, "GPSServer.soap");
        }        private void button1_Click(object sender, EventArgs e)
        {
            HLGpsClass.GpsDataArgs gpsDataArgs = new HLGpsClass.GpsDataArgs();            gpsDataArgs.GprsId = this.txtSendMessage.Text;
            this.gpsRemoteObject.SendGPRSGatewayDecodeData(gpsDataArgs);            this.lstSend.Items.Add("己发送:GPRSID" + gpsDataArgs.GprsId);
        }
客户端        Common.IGpsRemote iGpsRemote = null;
        Common.EventWrapper eventWrapper = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider();
                BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider();
                serverProvider.TypeFilterLevel = TypeFilterLevel.Full;                IDictionary porps = new Hashtable();
                porps["port"] = 0;                TcpChannel tcpChannel = new TcpChannel(porps, clientProvider, serverProvider);                ChannelServices.RegisterChannel(tcpChannel, true);                this.iGpsRemote = (Common.IGpsRemote)Activator.GetObject(typeof(Common.IGpsRemote), "tcp://localhost:8081/GPSServer.soap");                eventWrapper = new Common.EventWrapper();                eventWrapper.LocalForGPRSGatewayDecodeDataHandLerEvent += new Common.ForGPRSGatewayDecodeDataHandLer(eventWrapper_LocalForGPRSGatewayDecodeDataHandLerEvent);
                iGpsRemote.OnForGPRSGatewayDecodeDataHandLerEvent += new Common.ForGPRSGatewayDecodeDataHandLer(eventWrapper.ForServerBroadCasting);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        void eventWrapper_LocalForGPRSGatewayDecodeDataHandLerEvent(HLGpsClass.GpsDataArgs e, object sender)
        {
            MessageBox.Show("工厂" + e.GprsId);
        }