/// <summary> /// 处理单条命令 /// </summary> /// <param name="context"></param> public void Process(HecpContext context) { if (context == null) { throw new ArgumentNullException("context"); } try { if (!context.IsValid) { return; } if (!_versionSet.Contains(context.Request.Version)) { throw new AnycmdException("本Hecp处理程序不支持处理版本号" + context.Request.Version + "的消息"); } // ApplyPreRequestFilters ProcessResult result = context.AcDomain.NodeHost.ApplyPreHecpRequestFilters(context); context.Response.Body.Event.Status = (int)result.StateCode; context.Response.Body.Event.Description = result.Description; if (context.Response.IsClosed) { return; } #region 身份认证 var author = context.AcDomain.RetrieveRequiredService <IAuthenticator>(); if (author == null) { throw new AnycmdException("未配置证书验证器,证书验证器是必须的。"); } using (var act = new WfAct(context.AcDomain, context, author, "验证身份")) { result = author.Auth(context.Request); } if (!result.IsSuccess) { context.Response.Body.Event.Status = (int)result.StateCode; context.Response.Body.Event.ReasonPhrase = result.StateCode.ToName(); context.Response.Body.Event.Description = result.Description; return; } #endregion var commandContext = MessageContext.Create(context.AcDomain, context); MessageHandler.Instance.Response(commandContext); context.Response.Fill(commandContext.Result); // ApplyResponseFilters result = context.AcDomain.NodeHost.ApplyHecpResponseFilters(context); context.Response.Body.Event.Status = (int)result.StateCode; context.Response.Body.Event.ReasonPhrase = result.StateCode.ToName(); context.Response.Body.Event.Description = result.Description; if (context.Response.IsClosed) { return; } } catch { context.Response.Body.Event.Description = "服务器内部逻辑异常"; context.Response.Body.Event.Status = 500; context.Response.Body.Event.ReasonPhrase = Status.InternalServerError.ToName(); throw; } }
/// <summary> /// 处理单条命令 /// </summary> /// <param name="context"></param> public void Process(HecpContext context) { if (context == null) { throw new ArgumentNullException("context"); } try { if (!context.IsValid) { return; } if (!_versionSet.Contains(context.Request.Version)) { throw new AnycmdException("本Hecp处理程序不支持处理版本号" + context.Request.Version + "的消息"); } // ApplyPreRequestFilters ProcessResult result = context.AcDomain.NodeHost.ApplyPreHecpRequestFilters(context); context.Response.Body.Event.Status = (int)result.StateCode; context.Response.Body.Event.Description = result.Description; if (context.Response.IsClosed) { return; } #region 身份认证 var author = context.AcDomain.RetrieveRequiredService<IAuthenticator>(); if (author == null) { throw new AnycmdException("未配置证书验证器,证书验证器是必须的。"); } using (var act = new WfAct(context.AcDomain, context, author, "验证身份")) { result = author.Auth(context.Request); } if (!result.IsSuccess) { context.Response.Body.Event.Status = (int)result.StateCode; context.Response.Body.Event.ReasonPhrase = result.StateCode.ToName(); context.Response.Body.Event.Description = result.Description; return; } #endregion var commandContext = MessageContext.Create(context.AcDomain, context); MessageHandler.Instance.Response(commandContext); context.Response.Fill(commandContext.Result); // ApplyResponseFilters result = context.AcDomain.NodeHost.ApplyHecpResponseFilters(context); context.Response.Body.Event.Status = (int)result.StateCode; context.Response.Body.Event.ReasonPhrase = result.StateCode.ToName(); context.Response.Body.Event.Description = result.Description; if (context.Response.IsClosed) { return; } } catch { context.Response.Body.Event.Description = "服务器内部逻辑异常"; context.Response.Body.Event.Status = 500; context.Response.Body.Event.ReasonPhrase = Status.InternalServerError.ToName(); throw; } }