예제 #1
0
        /// <summary>
        ///     远程调用
        /// </summary>
        /// <returns></returns>
        private string CallZero()
        {
            var values = new Dictionary <string, string>();

            //参数解析
            foreach (var query in Request.Query.Keys)
            {
                if (!values.ContainsKey(query))
                {
                    values.Add(query, Request.Query[query]);
                }
            }

            if (Data.HttpMethod == "POST")
            {
                if (Request.ContentLength > 0)
                {
                    foreach (var form in Request.Form.Keys)
                    {
                        if (!values.ContainsKey(form))
                        {
                            values.Add(form, Request.Form[form]);
                        }
                    }
                }
            }

            LogRecorder.BeginStepMonitor("内部Zero调用");
            LogRecorder.MonitorTrace($"Station:{Data.HostName}");
            LogRecorder.MonitorTrace($"Command:{Data.ApiName}");

            // 远程调用状态
            try
            {
                Data.ResultMessage = StationProgram.Call(Data.HostName, Data.ApiName, JsonConvert.SerializeObject(values));
            }
            catch (Exception ex)
            {
                LogRecorder.Exception(ex);
                LogRecorder.MonitorTrace($"发生异常:{ex.Message}");
                Data.ResultMessage = RouteRuntime.NetworkError;
                Data.Status        = RouteStatus.RemoteError;
            }
            finally
            {
                LogRecorder.MonitorTrace(Data.ResultMessage);
                LogRecorder.EndStepMonitor();
            }

            return(Data.ResultMessage);
        }