}//end sub /// <summary> /// 处理用户的请求消息 /// </summary> /// <param name="e"></param> public void Execute(MessageRequestEventArgs e) { string message = e.MessageText; if (ServiceRequest.IsServiceUrl(message)) { string identity = e.Listener.Identity; string processMesssage = string.Empty; DateTime beginTime = DateTime.Now; processMesssage = string.Format("[{0}]正在处理服务请求--From: {1}:{2},Identity:{3}\r\n>>[RMID:{4}]{5}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), e.Listener.FromIP, e.Listener.FromPort, identity, e.Listener.MessageID, message.Length > 256 ? message.Substring(0, 256) : message); Console.WriteLine(processMesssage); int msgId = e.Listener.MessageID; //执行服务方法的时候,由服务方法指名是否需要维持会话状态 ServiceContext context = new ServiceContext(message); context.ServiceErrorEvent += new EventHandler <ServiceErrorEventArgs>(currentProcess_ServiceErrorEvent); context.Request.ClientIP = e.Listener.FromIP; context.Request.ClientPort = e.Listener.FromPort; context.Request.ClientIdentity = identity; context.InitRequestParameters(); context.User = MessageProcessBase.GetServiceIdentity(e.Listener); context.ProcessService(e.Listener.SessionID); string result = context.Response.AllText; bool noResult = context.NoResultRecord(result); DateTime endTime = DateTime.Now; processMesssage = string.Format("[{0}]请求处理完毕({1}ms)--To: {2}:{3},Identity:{4}\r\n>>[RMID:{5}]消息长度:{6} -------", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), endTime.Subtract(beginTime).TotalMilliseconds, e.Listener.FromIP, e.Listener.FromPort, identity, e.Listener.MessageID, noResult ? "[Empty Result]" : result.Length.ToString("###,###") + "字节"); Console.WriteLine(processMesssage); e.ResultText = result; //此处内容可能很大,不能全程输出 if (context.Response.ResultType == typeof(byte[])) { Console.WriteLine("[byte Content]"); } else { Console.WriteLine("result:{0}", result.Length > 100 ? result.Substring(0, 100) + " ..." : result); } } else { e.ResultText = "OK"; } }
static void Instance_ListenerRequestMessage(object sender, MessageRequestEventArgs e) { MessageProcesser processer = new MessageProcesser(); try { processer.Execute(e); } catch (Exception ex) { Processer_ServiceErrorEvent(processer, new ServiceErrorEventArgs(ex)); } }
static void Instance_ListenerRequestMessage(object sender, MessageRequestEventArgs e) { MessageProcesser processer = new MessageProcesser(); processer.Execute(e); }