예제 #1
0
 private Assembly GetAssembly()
 {
     return(SystemTrace.GetAssembly(this.assemblyName));
 }
예제 #2
0
        protected override bool Initialize(Assembly assembly)
        {
            Type type = assembly.GetType("System.ServiceModel.Diagnostics.MessageLogger");

            if (type == null)
            {
                SystemServiceModelMessageLogging.ReportFailure("type 'System.ServiceModel.Diagnostics.MessageLogger' not found in assembly " + assembly.FullName);
                return(false);
            }
            FieldInfo declaredField = type.GetTypeInfo().GetDeclaredField("messageTraceSource");

            if (declaredField == null || declaredField.IsPublic || !declaredField.IsStatic)
            {
                SystemServiceModelMessageLogging.ReportFailure("field 'messageTraceSource' not found in type " + type.Name);
                return(false);
            }
            Assembly assembly2 = SystemTrace.GetAssembly("SMDiagnostics");

            if (assembly2 == null)
            {
                SystemServiceModelMessageLogging.ReportFailure("assembly 'SMDiagnostics' not found");
                return(false);
            }
            Type type2 = assembly2.GetType("System.ServiceModel.Diagnostics.PiiTraceSource");

            if (type2 == null)
            {
                SystemServiceModelMessageLogging.ReportFailure("type 'System.ServiceModel.Diagnostics.PiiTraceSource' not found in assembly " + assembly2.FullName);
                return(false);
            }
            ConstructorInfo constructorInfo = null;

            foreach (ConstructorInfo constructorInfo2 in type2.GetTypeInfo().DeclaredConstructors)
            {
                if (!constructorInfo2.IsPublic)
                {
                    ParameterInfo[] parameters = constructorInfo2.GetParameters();
                    if (parameters != null && parameters.Length == 2 && parameters[0].ParameterType == typeof(string) && parameters[1].ParameterType == typeof(string))
                    {
                        constructorInfo = constructorInfo2;
                        break;
                    }
                }
            }
            if (constructorInfo == null)
            {
                SystemServiceModelMessageLogging.ReportFailure("instance constructor 'System.ServiceModel.Diagnostics.PiiTraceSource(string,string)' not found");
                return(false);
            }
            object obj = constructorInfo.Invoke(new object[]
            {
                "System.ServiceModel.MessageLogging",
                "System.ServiceModel 4.0.0.0"
            });

            this.source = (obj as TraceSource);
            if (this.source == null)
            {
                SystemServiceModelMessageLogging.ReportFailure("instance constructor 'System.ServiceModel.Diagnostics.PiiTraceSource(string,string)' did not return TraceSource object");
                return(false);
            }
            this.source.Switch.Level = SourceLevels.Off;
            this.source.Listeners.Remove("Default");
            declaredField.SetValue(null, this.source);
            TypeInfo typeInfo = type.GetTypeInfo();

            this.propertyLogMalformedMessages        = typeInfo.GetDeclaredProperty("LogMalformedMessages");
            this.propertyLogMessagesAtServiceLevel   = typeInfo.GetDeclaredProperty("LogMessagesAtServiceLevel");
            this.propertyLogMessagesAtTransportLevel = typeInfo.GetDeclaredProperty("LogMessagesAtTransportLevel");
            this.propertyLogMessageBody = typeInfo.GetDeclaredProperty("LogMessageBody");
            SystemServiceModelMessageLogging.SetMinimum(type, "MaxMessageSize", 262144);
            SystemServiceModelMessageLogging.SetMinimum(type, "MaxNumberOfMessagesToLog", 10000);
            return(true);
        }