private object InvokeWithMonitor(object instance, object[] inputs, out object[] outputs) { ServiceMethodConfigurationElement methodElement = ServiceSettings.GetConfig().GetMethodElementByOperationContext(); object[] result = null; if (methodElement != null) { PerformanceMonitorHelper.DefaultMonitorName = MonitorName; MonitorData md = PerformanceMonitorHelper.StartMonitor(MonitorName); md.MonitorName = string.Format("{0}.{1}", OperationContext.Current.GetContractName(), OperationContext.Current.GetMethodName()); md.EnableLogging = methodElement.EnableLogging; md.EnablePFCounter = methodElement.EnablePFCounter; md.InstanceName = md.MonitorName; md.Context["GlobalInstance"] = new WebMethodServerCounters("_Total_"); md.Context["Instance"] = new WebMethodServerCounters(md.InstanceName); if (md.EnableLogging) { md.LogWriter.WriteLine("请求{0}的开始时间: {1:yyyy-MM-dd HH:mm:ss.fff}", md.MonitorName, SNTPClient.AdjustedTime); } try { PerformanceMonitorHelper.GetDefaultMonitor().WriteExecutionDuration(md.MonitorName, () => { result = this.InternalInvoke(instance, inputs); }); } catch (System.Exception ex) { md.HasErrors = true; if (md.EnableLogging) { ex.WriteToEventLog(md.MonitorName, EventLogEntryType.Error, 8010); } throw; } finally { CommitMonitorData(); } } else { result = this.InternalInvoke(instance, inputs); } outputs = (object[])result[1]; return(result[0]); }
private static ServiceMethodConfigurationElement GetMethodSettings(string methodName) { ServiceSettings settings = ServiceSettings.GetConfig(); ServiceMethodConfigurationElement result = null; ServiceConfigurationElement serviceElement = settings.Services[typeof(AppSecurityCheckService).FullName]; if (serviceElement != null) { result = serviceElement.Methods[methodName]; } return(result ?? settings.MethodDefaultSettings); }
private static ServiceMethodConfigurationElement GetMethodSettings(SimpleRequestSoapMessage requestMessage) { ServiceSettings settings = ServiceSettings.GetConfig(); ServiceMethodConfigurationElement result = null; ServiceConfigurationElement serviceElement = settings.Services[requestMessage.ServiceName]; if (serviceElement != null) { result = serviceElement.Methods[requestMessage.Action]; } return(result ?? settings.MethodDefaultSettings); }