Imported Upstream version 4.6.0.127
Former-commit-id: 629e9b4e0300274209c1265fde8922ecbc21ec1f
This commit is contained in:
parent
e79aa3c0ed
commit
02ac915603
21
external/referencesource/LICENSE.txt
vendored
21
external/referencesource/LICENSE.txt
vendored
@ -1,21 +0,0 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
46
external/referencesource/PATENTS.TXT
vendored
46
external/referencesource/PATENTS.TXT
vendored
@ -1,46 +0,0 @@
|
||||
Microsoft Patent Promise for .NET Libraries and Runtime Components
|
||||
|
||||
Microsoft Corporation and its affiliates ("Microsoft") promise not to assert
|
||||
any .NET Patents against you for making, using, selling, offering for sale,
|
||||
importing, or distributing Covered Code, as part of either a .NET Runtime or
|
||||
as part of any application designed to run on a .NET Runtime.
|
||||
|
||||
If you file, maintain, or voluntarily participate in any claim in a lawsuit
|
||||
alleging direct or contributory patent infringement by any Covered Code, or
|
||||
inducement of patent infringement by any Covered Code, then your rights under
|
||||
this promise will automatically terminate.
|
||||
|
||||
This promise is not an assurance that (i) any .NET Patents are valid or
|
||||
enforceable, or (ii) Covered Code does not infringe patents or other
|
||||
intellectual property rights of any third party. No rights except those
|
||||
expressly stated in this promise are granted, waived, or received by
|
||||
Microsoft, whether by implication, exhaustion, estoppel, or otherwise.
|
||||
This is a personal promise directly from Microsoft to you, and you agree as a
|
||||
condition of benefiting from it that no Microsoft rights are received from
|
||||
suppliers, distributors, or otherwise from any other person in connection with
|
||||
this promise.
|
||||
|
||||
Definitions:
|
||||
|
||||
"Covered Code" means those Microsoft .NET libraries and runtime components as
|
||||
made available by Microsoft at https://github.com/Microsoft/referencesource.
|
||||
|
||||
".NET Patents" are those patent claims, both currently owned by Microsoft and
|
||||
acquired in the future, that are necessarily infringed by Covered Code. .NET
|
||||
Patents do not include any patent claims that are infringed by any Enabling
|
||||
Technology, that are infringed only as a consequence of modification of
|
||||
Covered Code, or that are infringed only by the combination of Covered Code
|
||||
with third party code.
|
||||
|
||||
".NET Runtime" means any compliant implementation in software of (a) all of
|
||||
the required parts of the mandatory provisions of Standard ECMA-335 – Common
|
||||
Language Infrastructure (CLI); and (b) if implemented, any additional
|
||||
functionality in Microsoft's .NET Framework, as described in Microsoft's API
|
||||
documentation on its MSDN website. For example, .NET Runtimes include
|
||||
Microsoft's .NET Framework and those portions of the Mono Project compliant
|
||||
with (a) and (b).
|
||||
|
||||
"Enabling Technology" means underlying or enabling technology that may be
|
||||
used, combined, or distributed in connection with Microsoft's .NET Framework
|
||||
or other .NET Runtimes, such as hardware, operating systems, and applications
|
||||
that run on .NET Framework or other .NET Runtimes.
|
24
external/referencesource/README.Mono
vendored
24
external/referencesource/README.Mono
vendored
@ -1,24 +0,0 @@
|
||||
Known conditionals:
|
||||
|
||||
* MONO_FEATURE_WEB_STACK: when we have the full web stack.
|
||||
|
||||
* MONO_FEATURE_NEW_TLS: we are using the new TLS implementation.
|
||||
|
||||
* MONO_FEATURE_LOGGING: whether we want the internal logging API.
|
||||
|
||||
* MONO_NOT_SUPPORTED: not supported in Mono.
|
||||
|
||||
* MONO_NOT_IMPLEMENTED: not yet implemented in Mono.
|
||||
|
||||
Other defines which are used when building the BCL and tests:
|
||||
|
||||
* MONO_INSIDE_SYSTEM: we're building System.dll.
|
||||
|
||||
* MONO_INSIDE_MONO_SECURITY: we're building Mono.Security.dll.
|
||||
|
||||
Extern aliases:
|
||||
|
||||
* MONO_SECURITY_ALIAS: we're using Mono.Security from the "MonoSecurity" extern alias.
|
||||
|
||||
* MONO_X509_ALIAS: we're using X509CertificateCollection from the "PrebuiltSystem" extern alias.
|
||||
|
10
external/referencesource/README.md
vendored
10
external/referencesource/README.md
vendored
@ -1,10 +0,0 @@
|
||||
# .NET Reference Source
|
||||
|
||||
The referencesource repository contains sources from [Microsoft .NET Reference Source](http://referencesource.microsoft.com/)
|
||||
that represent a subset of the .NET Framework. This subset contains similar functionality to the class libraries that are being
|
||||
developed in [.NET Core](https://github.com/dotnet/corefx). We intend to consult the referencesource repository as we develop
|
||||
.NET Core. It is also for the community to leverage to enable more scenarios for .NET developers.
|
||||
|
||||
**Please note that the referencesource repository is read-only**. [See this blog post](http://blogs.msdn.com/b/dotnet/archive/2014/11/12/net-core-is-open-source.aspx) for the rationale.
|
||||
|
||||
Questions, bugs, and pull requests should be done through [.NET Core](https://github.com/dotnet/corefx).
|
@ -1,52 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Runtime.Diagnostics;
|
||||
|
||||
class Activity : IDisposable
|
||||
{
|
||||
protected Guid parentId;
|
||||
Guid currentId;
|
||||
bool mustDispose = false;
|
||||
|
||||
protected Activity(Guid activityId, Guid parentId)
|
||||
{
|
||||
this.currentId = activityId;
|
||||
this.parentId = parentId;
|
||||
this.mustDispose = true;
|
||||
DiagnosticTraceBase.ActivityId = this.currentId;
|
||||
}
|
||||
|
||||
internal static Activity CreateActivity(Guid activityId)
|
||||
{
|
||||
Activity retval = null;
|
||||
if (activityId != Guid.Empty)
|
||||
{
|
||||
Guid currentActivityId = DiagnosticTraceBase.ActivityId;
|
||||
if (activityId != currentActivityId)
|
||||
{
|
||||
retval = new Activity(activityId, currentActivityId);
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
if (this.mustDispose)
|
||||
{
|
||||
this.mustDispose = false;
|
||||
DiagnosticTraceBase.ActivityId = this.parentId;
|
||||
}
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
protected Guid Id
|
||||
{
|
||||
get { return this.currentId; }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
static class DiagnosticStrings
|
||||
{
|
||||
internal const string DiagnosticsNamespace = "http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics";
|
||||
|
||||
internal const string ActivityIdName = "E2ETrace.ActivityID";
|
||||
internal const string ActivityId = "ActivityId";
|
||||
internal const string AppDomain = "AppDomain";
|
||||
internal const string DataTag = "Data";
|
||||
internal const string DataItemsTag = "DataItems";
|
||||
internal const string DeflateCookieAfterDeflatingTag = "AfterDeflating";
|
||||
internal const string DeflateCookieOriginalSizeTag = "OriginalSize";
|
||||
internal const string DescriptionTag = "Description";
|
||||
internal const string EventLogTag = "EventLog";
|
||||
internal const string ExceptionTag = "Exception";
|
||||
internal const string ExceptionTypeTag = "ExceptionType";
|
||||
internal const string ExceptionStringTag = "ExceptionString";
|
||||
internal const string ExtendedDataTag = "ExtendedData";
|
||||
internal const string HeaderTag = "Header";
|
||||
internal const string InnerExceptionTag = "InnerException";
|
||||
internal const string KeyTag = "Key";
|
||||
internal const string MessageTag = "Message";
|
||||
internal const string NameTag = "Name";
|
||||
internal const string NamespaceTag = "xmlns";
|
||||
internal const string NativeErrorCodeTag = "NativeErrorCode";
|
||||
internal const string ProcessId = "ProcessId";
|
||||
internal const string ProcessName = "ProcessName";
|
||||
internal const string RoleTag = "Role";
|
||||
internal const string SeverityTag = "Severity";
|
||||
internal const string SourceTag = "Source";
|
||||
internal const string StackTraceTag = "StackTrace";
|
||||
internal const string TraceCodeTag = "TraceIdentifier";
|
||||
internal const string TraceRecordTag = "TraceRecord";
|
||||
internal const string ValueTag = "Value";
|
||||
|
||||
internal static string[][] HeadersPaths = {
|
||||
new string[] { DiagnosticStrings.TraceRecordTag, DiagnosticStrings.ExtendedDataTag, "MessageHeaders", "Security" },
|
||||
new string[] { DiagnosticStrings.TraceRecordTag, DiagnosticStrings.ExtendedDataTag, "MessageHeaders", "IssuedTokens" } };
|
||||
internal static string[] PiiList = new string[] { "BinarySecret", "Entropy", "Password", "Nonce", "Username", "BinarySecurityToken", "NameIdentifier", "SubjectLocality", "AttributeValue" };
|
||||
}
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Diagnostics;
|
||||
|
||||
class DiagnosticTraceSource : PiiTraceSource
|
||||
{
|
||||
const string PropagateActivityValue = "propagateActivity";
|
||||
internal DiagnosticTraceSource(string name, string eventSourceName)
|
||||
: base(name, eventSourceName)
|
||||
{
|
||||
}
|
||||
|
||||
internal DiagnosticTraceSource(string name, string eventSourceName, SourceLevels level)
|
||||
: base(name, eventSourceName, level)
|
||||
{
|
||||
}
|
||||
|
||||
protected override string[] GetSupportedAttributes()
|
||||
{
|
||||
string[] baseAttributes = base.GetSupportedAttributes();
|
||||
string[] supportedAttributes = new string[baseAttributes.Length + 1];
|
||||
for (int i = 0; i < baseAttributes.Length; i++)
|
||||
{
|
||||
supportedAttributes[i] = baseAttributes[i];
|
||||
}
|
||||
supportedAttributes[baseAttributes.Length] = DiagnosticTraceSource.PropagateActivityValue;
|
||||
|
||||
return supportedAttributes;
|
||||
}
|
||||
|
||||
internal bool PropagateActivity
|
||||
{
|
||||
get
|
||||
{
|
||||
bool retval = false;
|
||||
string attributeValue = this.Attributes[DiagnosticTraceSource.PropagateActivityValue];
|
||||
if (!string.IsNullOrEmpty(attributeValue))
|
||||
{
|
||||
if (!bool.TryParse(attributeValue, out retval))
|
||||
{
|
||||
retval = false;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.Attributes[DiagnosticTraceSource.PropagateActivityValue] = value.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
static class DiagnosticsTraceCode
|
||||
{
|
||||
// Diagnostic trace codes
|
||||
public const int Diagnostics = 0X20000;
|
||||
public const int AppDomainUnload = DiagnosticsTraceCode.Diagnostics | 0X0001; //
|
||||
public const int EventLog = DiagnosticsTraceCode.Diagnostics | 0X0002; //
|
||||
public const int ThrowingException = DiagnosticsTraceCode.Diagnostics | 0X0003; //
|
||||
public const int TraceHandledException = DiagnosticsTraceCode.Diagnostics | 0X0004; //
|
||||
public const int UnhandledException = DiagnosticsTraceCode.Diagnostics | 0X0005; //
|
||||
public const int TraceTruncatedQuotaExceeded = DiagnosticsTraceCode.Diagnostics | 0X000C; //
|
||||
}
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Xml;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
class EncodingFallbackAwareXmlTextWriter : XmlTextWriter
|
||||
{
|
||||
Encoding encoding;
|
||||
|
||||
internal EncodingFallbackAwareXmlTextWriter(TextWriter writer)
|
||||
: base(writer)
|
||||
{
|
||||
this.encoding = writer.Encoding;
|
||||
}
|
||||
|
||||
public override void WriteString(string value)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(value) &&
|
||||
ContainsInvalidXmlChar(value))
|
||||
{
|
||||
byte[] blob = encoding.GetBytes(value);
|
||||
value = encoding.GetString(blob);
|
||||
}
|
||||
base.WriteString(value);
|
||||
}
|
||||
|
||||
bool ContainsInvalidXmlChar(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int len = value.Length;
|
||||
|
||||
while (i < len)
|
||||
{
|
||||
if (XmlConvert.IsXmlChar(value[i]))
|
||||
{
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i + 1 < len &&
|
||||
XmlConvert.IsXmlSurrogatePair(value[i + 1], value[i]))
|
||||
{
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
// FUTURE: This class is kept so that 4.0 Extended SKU runs fine on 4.5 Client. Will remove this in the future.
|
||||
// Order is important here. The order must match the order of strings in ..\EventLog\EventLog.mc
|
||||
[Obsolete("This has been replaced by System.Runtime.Diagnostics.EventLogCategory")]
|
||||
enum EventLogCategory : ushort
|
||||
{
|
||||
ServiceAuthorization = 1, // reserved
|
||||
MessageAuthentication, // reserved
|
||||
ObjectAccess, // reserved
|
||||
Tracing,
|
||||
WebHost,
|
||||
FailFast,
|
||||
MessageLogging,
|
||||
PerformanceCounter,
|
||||
Wmi,
|
||||
ComPlus,
|
||||
StateMachine,
|
||||
Wsat,
|
||||
SharingService,
|
||||
ListenerAdapter
|
||||
}
|
||||
|
||||
}
|
@ -1,100 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
// FUTURE: This class is kept so that 4.0 Extended SKU runs fine on 4.5 Client. Will remove this in the future.
|
||||
// Order is important here. The order must match the order of strings in ..\EventLog\EventLog.mc
|
||||
[Obsolete("This has been replaced by System.Runtime.Diagnostics.EventLogEventId")]
|
||||
enum EventLogEventId : uint
|
||||
{
|
||||
// EventIDs from shared Diagnostics and Reliability code
|
||||
FailedToSetupTracing = 0xC0010064,
|
||||
FailedToInitializeTraceSource,
|
||||
FailFast,
|
||||
FailFastException,
|
||||
FailedToTraceEvent,
|
||||
FailedToTraceEventWithException,
|
||||
InvariantAssertionFailed,
|
||||
PiiLoggingOn,
|
||||
PiiLoggingNotAllowed,
|
||||
|
||||
// ServiceModel EventIDs
|
||||
WebHostUnhandledException = 0xC0020001,
|
||||
WebHostHttpError,
|
||||
WebHostFailedToProcessRequest,
|
||||
WebHostFailedToListen,
|
||||
FailedToLogMessage,
|
||||
RemovedBadFilter,
|
||||
FailedToCreateMessageLoggingTraceSource,
|
||||
MessageLoggingOn,
|
||||
MessageLoggingOff,
|
||||
FailedToLoadPerformanceCounter,
|
||||
FailedToRemovePerformanceCounter,
|
||||
WmiGetObjectFailed,
|
||||
WmiPutInstanceFailed,
|
||||
WmiDeleteInstanceFailed,
|
||||
WmiCreateInstanceFailed,
|
||||
WmiExecQueryFailed,
|
||||
WmiExecMethodFailed,
|
||||
WmiRegistrationFailed,
|
||||
WmiUnregistrationFailed,
|
||||
WmiAdminTypeMismatch,
|
||||
WmiPropertyMissing,
|
||||
ComPlusServiceHostStartingServiceError,
|
||||
ComPlusDllHostInitializerStartingError,
|
||||
ComPlusTLBImportError,
|
||||
ComPlusInvokingMethodFailed,
|
||||
ComPlusInstanceCreationError,
|
||||
ComPlusInvokingMethodFailedMismatchedTransactions,
|
||||
|
||||
// TransactionBridge
|
||||
UnhandledStateMachineExceptionRecordDescription = 0xC0030001,
|
||||
FatalUnexpectedStateMachineEvent,
|
||||
ParticipantRecoveryLogEntryCorrupt,
|
||||
CoordinatorRecoveryLogEntryCorrupt,
|
||||
CoordinatorRecoveryLogEntryCreationFailure,
|
||||
ParticipantRecoveryLogEntryCreationFailure,
|
||||
ProtocolInitializationFailure,
|
||||
ProtocolStartFailure,
|
||||
ProtocolRecoveryBeginningFailure,
|
||||
ProtocolRecoveryCompleteFailure,
|
||||
TransactionBridgeRecoveryFailure,
|
||||
ProtocolStopFailure,
|
||||
NonFatalUnexpectedStateMachineEvent,
|
||||
PerformanceCounterInitializationFailure,
|
||||
ProtocolRecoveryComplete,
|
||||
ProtocolStopped,
|
||||
ThumbPrintNotFound,
|
||||
ThumbPrintNotValidated,
|
||||
SslNoPrivateKey,
|
||||
SslNoAccessiblePrivateKey,
|
||||
MissingNecessaryKeyUsage,
|
||||
MissingNecessaryEnhancedKeyUsage,
|
||||
|
||||
// SMSvcHost
|
||||
StartErrorPublish = 0xC0040001,
|
||||
BindingError,
|
||||
LAFailedToListenForApp,
|
||||
UnknownListenerAdapterError,
|
||||
WasDisconnected,
|
||||
WasConnectionTimedout,
|
||||
ServiceStartFailed,
|
||||
MessageQueueDuplicatedSocketLeak,
|
||||
MessageQueueDuplicatedPipeLeak,
|
||||
SharingUnhandledException,
|
||||
|
||||
// SecurityAudit
|
||||
ServiceAuthorizationSuccess = 0x40060001,
|
||||
ServiceAuthorizationFailure = 0xC0060002,
|
||||
MessageAuthenticationSuccess = 0x40060003,
|
||||
MessageAuthenticationFailure = 0xC0060004,
|
||||
SecurityNegotiationSuccess = 0x40060005,
|
||||
SecurityNegotiationFailure = 0xC0060006,
|
||||
TransportAuthenticationSuccess = 0x40060007,
|
||||
TransportAuthenticationFailure = 0xC0060008,
|
||||
ImpersonationSuccess = 0x40060009,
|
||||
ImpersonationFailure = 0xC006000A
|
||||
}
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Diagnostics;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Security.Principal;
|
||||
|
||||
//
|
||||
[Obsolete("This has been replaced by System.Runtime.Diagnostics.EventLogger")]
|
||||
class EventLogger
|
||||
{
|
||||
System.Runtime.Diagnostics.EventLogger innerEventLogger;
|
||||
|
||||
EventLogger()
|
||||
{
|
||||
}
|
||||
|
||||
[Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.EventLog instead")]
|
||||
internal EventLogger(string eventLogSourceName, object diagnosticTrace)
|
||||
{
|
||||
this.innerEventLogger = new System.Runtime.Diagnostics.EventLogger(eventLogSourceName, (System.Runtime.Diagnostics.DiagnosticTraceBase)diagnosticTrace);
|
||||
}
|
||||
|
||||
[System.Runtime.Fx.Tag.SecurityNote(Critical = "Calling SecurityCritical method/property")]
|
||||
[SecurityCritical]
|
||||
internal static EventLogger UnsafeCreateEventLogger(string eventLogSourceName, object diagnosticTrace)
|
||||
{
|
||||
EventLogger logger = new EventLogger();
|
||||
logger.innerEventLogger = System.Runtime.Diagnostics.EventLogger.UnsafeCreateEventLogger(eventLogSourceName, (System.Runtime.Diagnostics.DiagnosticTraceBase)diagnosticTrace);
|
||||
return logger;
|
||||
}
|
||||
|
||||
internal void LogEvent(TraceEventType type, EventLogCategory category, EventLogEventId eventId, bool shouldTrace, params string[] values)
|
||||
{
|
||||
this.innerEventLogger.LogEvent(type, (ushort)category, (uint)eventId, shouldTrace, values);
|
||||
}
|
||||
|
||||
[System.Runtime.Fx.Tag.SecurityNote(Critical = "Calling SecurityCritical method/property")]
|
||||
[SecurityCritical]
|
||||
internal void UnsafeLogEvent(TraceEventType type, EventLogCategory category, EventLogEventId eventId, bool shouldTrace, params string[] values)
|
||||
{
|
||||
this.innerEventLogger.UnsafeLogEvent(type, (ushort)category, (uint)eventId,
|
||||
shouldTrace, values);
|
||||
}
|
||||
|
||||
internal void LogEvent(TraceEventType type, EventLogCategory category, EventLogEventId eventId, params string[] values)
|
||||
{
|
||||
this.innerEventLogger.LogEvent(type, (ushort)category, (uint)eventId, values);
|
||||
}
|
||||
|
||||
internal static string NormalizeEventLogParameter(string param)
|
||||
{
|
||||
return System.Runtime.Diagnostics.EventLogger.NormalizeEventLogParameter(param);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,273 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
using System.Runtime.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Collections;
|
||||
using System.Xml;
|
||||
|
||||
class ExceptionUtility
|
||||
{
|
||||
const string ExceptionStackAsStringKey = "System.ServiceModel.Diagnostics.ExceptionUtility.ExceptionStackAsString";
|
||||
|
||||
// This field should be only used for debug build.
|
||||
internal static ExceptionUtility mainInstance;
|
||||
|
||||
LegacyDiagnosticTrace diagnosticTrace;
|
||||
ExceptionTrace exceptionTrace;
|
||||
string name;
|
||||
string eventSourceName;
|
||||
|
||||
[ThreadStatic]
|
||||
static Guid activityId;
|
||||
|
||||
[ThreadStatic]
|
||||
static bool useStaticActivityId;
|
||||
|
||||
[Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.ExceptionUtility instead")]
|
||||
internal ExceptionUtility(string name, string eventSourceName, object diagnosticTrace, object exceptionTrace)
|
||||
{
|
||||
this.diagnosticTrace = (LegacyDiagnosticTrace)diagnosticTrace;
|
||||
this.exceptionTrace = (ExceptionTrace)exceptionTrace;
|
||||
this.name = name;
|
||||
this.eventSourceName = eventSourceName;
|
||||
}
|
||||
|
||||
[Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.ExceptionUtility instead")]
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
#pragma warning disable 56500
|
||||
internal void TraceFailFast(string message)
|
||||
{
|
||||
System.Runtime.Diagnostics.EventLogger logger = null;
|
||||
try
|
||||
{
|
||||
#pragma warning disable 618
|
||||
logger = new System.Runtime.Diagnostics.EventLogger(this.eventSourceName, this.diagnosticTrace);
|
||||
#pragma warning restore 618
|
||||
}
|
||||
finally
|
||||
{
|
||||
#pragma warning disable 618
|
||||
TraceFailFast(message, logger);
|
||||
#pragma warning restore 618
|
||||
}
|
||||
}
|
||||
|
||||
// Fail-- Event Log entry will be generated.
|
||||
// To force a Watson on a dev machine, do the following:
|
||||
// 1. Set \HKLM\SOFTWARE\Microsoft\PCHealth\ErrorReporting ForceQueueMode = 0
|
||||
// 2. In the command environment, set COMPLUS_DbgJitDebugLaunchSetting=0
|
||||
[Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.ExceptionUtility instead")]
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
internal static void TraceFailFast(string message, System.Runtime.Diagnostics.EventLogger logger)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (logger != null)
|
||||
{
|
||||
string stackTrace = null;
|
||||
try
|
||||
{
|
||||
stackTrace = new StackTrace().ToString();
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
stackTrace = exception.Message;
|
||||
}
|
||||
finally
|
||||
{
|
||||
logger.LogEvent(TraceEventType.Critical,
|
||||
(ushort)EventLogCategory.FailFast,
|
||||
(uint)EventLogEventId.FailFast,
|
||||
message,
|
||||
stackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (logger != null)
|
||||
{
|
||||
logger.LogEvent(TraceEventType.Critical,
|
||||
(ushort)EventLogCategory.FailFast,
|
||||
(uint)EventLogEventId.FailFastException,
|
||||
e.ToString());
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
#pragma warning restore 56500
|
||||
|
||||
[Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.ExceptionUtility instead")]
|
||||
internal void TraceFailFastException(Exception exception)
|
||||
{
|
||||
TraceFailFast(exception == null ? null : exception.ToString());
|
||||
}
|
||||
|
||||
internal Exception ThrowHelper(Exception exception, TraceEventType eventType, TraceRecord extendedData)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
bool shouldTrace = (this.diagnosticTrace != null && this.diagnosticTrace.ShouldTrace(eventType));
|
||||
#pragma warning restore 618
|
||||
if (shouldTrace)
|
||||
{
|
||||
using (ExceptionUtility.useStaticActivityId ? Activity.CreateActivity(ExceptionUtility.activityId) : null)
|
||||
{
|
||||
this.diagnosticTrace.TraceEvent(eventType, DiagnosticsTraceCode.ThrowingException, LegacyDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "ThrowingException"), TraceSR.GetString(TraceSR.ThrowingException), extendedData, exception, null);
|
||||
}
|
||||
|
||||
IDictionary data = exception.Data;
|
||||
if (data != null && !data.IsReadOnly && !data.IsFixedSize)
|
||||
{
|
||||
object existingString = data[ExceptionStackAsStringKey];
|
||||
string stackString = existingString == null ? "" : existingString as string;
|
||||
if (stackString != null)
|
||||
{
|
||||
string stack = exception.StackTrace;
|
||||
if (!string.IsNullOrEmpty(stack))
|
||||
{
|
||||
stackString = string.Concat(stackString, stackString.Length == 0 ? "" : Environment.NewLine, "throw", Environment.NewLine, stack, Environment.NewLine, "catch", Environment.NewLine);
|
||||
data[ExceptionStackAsStringKey] = stackString;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Trace using ETW as well.
|
||||
exceptionTrace.TraceEtwException(exception, eventType);
|
||||
|
||||
return exception;
|
||||
}
|
||||
|
||||
internal Exception ThrowHelper(Exception exception, TraceEventType eventType)
|
||||
{
|
||||
return this.ThrowHelper(exception, eventType, null);
|
||||
}
|
||||
|
||||
internal ArgumentException ThrowHelperArgument(string message)
|
||||
{
|
||||
return (ArgumentException)this.ThrowHelperError(new ArgumentException(message));
|
||||
}
|
||||
|
||||
internal ArgumentException ThrowHelperArgument(string paramName, string message)
|
||||
{
|
||||
return (ArgumentException)this.ThrowHelperError(new ArgumentException(message, paramName));
|
||||
}
|
||||
|
||||
internal ArgumentNullException ThrowHelperArgumentNull(string paramName)
|
||||
{
|
||||
return (ArgumentNullException)this.ThrowHelperError(new ArgumentNullException(paramName));
|
||||
}
|
||||
|
||||
internal ArgumentNullException ThrowHelperArgumentNull(string paramName, string message)
|
||||
{
|
||||
return (ArgumentNullException)this.ThrowHelperError(new ArgumentNullException(paramName, message));
|
||||
}
|
||||
|
||||
internal ArgumentException ThrowHelperArgumentNullOrEmptyString(string arg)
|
||||
{
|
||||
return (ArgumentException)this.ThrowHelperError(new ArgumentException(TraceSR.GetString(TraceSR.StringNullOrEmpty), arg));
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperFatal(string message, Exception innerException)
|
||||
{
|
||||
return this.ThrowHelperError(new FatalException(message, innerException));
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperInternal(bool fatal)
|
||||
{
|
||||
return fatal ? Fx.AssertAndThrowFatal("Fatal InternalException should never be thrown.") : Fx.AssertAndThrow("InternalException should never be thrown.");
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperInvalidOperation(string message)
|
||||
{
|
||||
return ThrowHelperError(new InvalidOperationException(message));
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperCallback(string message, Exception innerException)
|
||||
{
|
||||
return this.ThrowHelperCritical(new CallbackException(message, innerException));
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperCallback(Exception innerException)
|
||||
{
|
||||
return this.ThrowHelperCallback(TraceSR.GetString(TraceSR.GenericCallbackException), innerException);
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperCritical(Exception exception)
|
||||
{
|
||||
return this.ThrowHelper(exception, TraceEventType.Critical);
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperError(Exception exception)
|
||||
{
|
||||
return this.ThrowHelper(exception, TraceEventType.Error);
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperWarning(Exception exception)
|
||||
{
|
||||
return this.ThrowHelper(exception, TraceEventType.Warning);
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperXml(XmlReader reader, string message)
|
||||
{
|
||||
return this.ThrowHelperXml(reader, message, null);
|
||||
}
|
||||
|
||||
internal Exception ThrowHelperXml(XmlReader reader, string message, Exception inner)
|
||||
{
|
||||
IXmlLineInfo lineInfo = reader as IXmlLineInfo;
|
||||
return this.ThrowHelperError(new XmlException(
|
||||
message,
|
||||
inner,
|
||||
(null != lineInfo) ? lineInfo.LineNumber : 0,
|
||||
(null != lineInfo) ? lineInfo.LinePosition : 0));
|
||||
}
|
||||
|
||||
internal void DiagnosticTraceHandledException(Exception exception, TraceEventType eventType)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
bool shouldTrace = (this.diagnosticTrace != null && this.diagnosticTrace.ShouldTrace(eventType));
|
||||
#pragma warning restore 618
|
||||
if (shouldTrace)
|
||||
{
|
||||
using (ExceptionUtility.useStaticActivityId ? Activity.CreateActivity(ExceptionUtility.activityId) : null)
|
||||
{
|
||||
this.diagnosticTrace.TraceEvent(eventType, DiagnosticsTraceCode.TraceHandledException, LegacyDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "TraceHandledException"), TraceSR.GetString(TraceSR.TraceHandledException), null, exception, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// On a single thread, these functions will complete just fine
|
||||
// and don't need to worry about locking issues because the effected
|
||||
// variables are ThreadStatic.
|
||||
internal static void UseActivityId(Guid activityId)
|
||||
{
|
||||
ExceptionUtility.activityId = activityId;
|
||||
ExceptionUtility.useStaticActivityId = true;
|
||||
}
|
||||
|
||||
internal static void ClearActivityId()
|
||||
{
|
||||
ExceptionUtility.useStaticActivityId = false;
|
||||
ExceptionUtility.activityId = Guid.Empty;
|
||||
}
|
||||
|
||||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
|
||||
internal static bool IsInfrastructureException(Exception exception)
|
||||
{
|
||||
return exception != null && (exception is ThreadAbortException || exception is AppDomainUnloadedException);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,310 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Runtime;
|
||||
using System.Runtime.Diagnostics;
|
||||
using System.Security;
|
||||
using System.Security.Permissions;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
class LegacyDiagnosticTrace : DiagnosticTraceBase
|
||||
{
|
||||
const int MaxTraceSize = 65535;
|
||||
bool shouldUseActivity = false;
|
||||
TraceSourceKind traceSourceType = TraceSourceKind.PiiTraceSource;
|
||||
const string subType = "";
|
||||
const string version = "1";
|
||||
const int traceFailureLogThreshold = 1;
|
||||
const SourceLevels DefaultLevel = SourceLevels.Off;
|
||||
static object classLockObject = new object();
|
||||
|
||||
protected override void OnSetLevel(SourceLevels level)
|
||||
{
|
||||
if (this.TraceSource != null)
|
||||
{
|
||||
if (this.TraceSource.Switch.Level != SourceLevels.Off &&
|
||||
level == SourceLevels.Off)
|
||||
{
|
||||
TraceSource temp = this.TraceSource;
|
||||
this.CreateTraceSource();
|
||||
temp.Close();
|
||||
}
|
||||
this.shouldUseActivity = (level & SourceLevels.ActivityTracing) != 0;
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("For SMDiagnostics.dll use only. Call DiagnosticUtility.ShouldUseActivity instead")]
|
||||
internal bool ShouldUseActivity
|
||||
{
|
||||
get { return this.shouldUseActivity; }
|
||||
}
|
||||
|
||||
#pragma warning disable 56500
|
||||
[Obsolete("For SMDiagnostics.dll use only. Never 'new' this type up unless you are DiagnosticUtility.")]
|
||||
[Fx.Tag.SecurityNote(Critical = "Sets eventSourceName.")]
|
||||
[SecurityCritical]
|
||||
[SuppressMessage(FxCop.Category.Usage, FxCop.Rule.DoNotCallOverridableMethodsInConstructors,
|
||||
Justification = "LegacyDiagnosticTrace is an internal class without derived classes")]
|
||||
internal LegacyDiagnosticTrace(TraceSourceKind sourceType, string traceSourceName, string eventSourceName)
|
||||
: base(traceSourceName)
|
||||
{
|
||||
this.traceSourceType = sourceType;
|
||||
this.EventSourceName = eventSourceName;
|
||||
|
||||
try
|
||||
{
|
||||
this.CreateTraceSource();
|
||||
this.AddDomainEventHandlersForCleanup();
|
||||
}
|
||||
#if !NO_CONFIGURATION
|
||||
catch (ConfigurationErrorsException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Fx.IsFatal(e))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
System.Runtime.Diagnostics.EventLogger logger = new System.Runtime.Diagnostics.EventLogger(this.EventSourceName, null);
|
||||
logger.LogEvent(TraceEventType.Error, (ushort)System.Runtime.Diagnostics.EventLogCategory.Tracing, (uint)System.Runtime.Diagnostics.EventLogEventId.FailedToSetupTracing, false,
|
||||
e.ToString());
|
||||
}
|
||||
}
|
||||
#pragma warning restore 56500
|
||||
|
||||
[SecuritySafeCritical]
|
||||
void CreateTraceSource()
|
||||
{
|
||||
PiiTraceSource tempSource = null;
|
||||
if (this.traceSourceType == TraceSourceKind.PiiTraceSource)
|
||||
{
|
||||
tempSource = new PiiTraceSource(this.TraceSourceName, this.EventSourceName, LegacyDiagnosticTrace.DefaultLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
tempSource = new DiagnosticTraceSource(this.TraceSourceName, this.EventSourceName, LegacyDiagnosticTrace.DefaultLevel);
|
||||
}
|
||||
|
||||
SetTraceSource(tempSource);
|
||||
}
|
||||
|
||||
#pragma warning disable 56500
|
||||
internal void TraceEvent(TraceEventType type, int code, string msdnTraceCode, string description, TraceRecord trace, Exception exception, object source)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
Fx.Assert(exception == null || type <= TraceEventType.Information, "Exceptions should be traced at Information or higher");
|
||||
Fx.Assert(!string.IsNullOrEmpty(description), "All TraceCodes should have a description");
|
||||
#pragma warning restore 618
|
||||
TraceXPathNavigator navigator = null;
|
||||
try
|
||||
{
|
||||
#pragma warning disable 618
|
||||
if (this.TraceSource != null && this.HaveListeners)
|
||||
#pragma warning restore 618
|
||||
{
|
||||
try
|
||||
{
|
||||
BuildTrace(type, msdnTraceCode, description, trace, exception, source, out navigator);
|
||||
}
|
||||
catch (PlainXmlWriter.MaxSizeExceededException)
|
||||
{
|
||||
StringTraceRecord codeTraceRecord = new StringTraceRecord("TruncatedTraceId", msdnTraceCode);
|
||||
this.TraceEvent(type, DiagnosticsTraceCode.TraceTruncatedQuotaExceeded, LegacyDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "TraceTruncatedQuotaExceeded"), TraceSR.GetString(TraceSR.TraceCodeTraceTruncatedQuotaExceeded), codeTraceRecord, null, null);
|
||||
}
|
||||
this.TraceSource.TraceData(type, code, navigator);
|
||||
if (this.CalledShutdown)
|
||||
{
|
||||
this.TraceSource.Flush();
|
||||
}
|
||||
// Must have been a successful trace.
|
||||
this.LastFailure = DateTime.MinValue;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Fx.IsFatal(e))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
LogTraceFailure(navigator == null ? string.Empty : navigator.ToString(), e);
|
||||
}
|
||||
}
|
||||
#pragma warning restore 56500
|
||||
|
||||
internal void TraceEvent(TraceEventType type, int code, string msdnTraceCode, string description, TraceRecord trace, Exception exception, Guid activityId, object source)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
using ((this.ShouldUseActivity && Guid.Empty != activityId) ? Activity.CreateActivity(activityId) : null)
|
||||
#pragma warning restore 618
|
||||
{
|
||||
this.TraceEvent(type, code, msdnTraceCode, description, trace, exception, source);
|
||||
}
|
||||
}
|
||||
|
||||
// helper for standardized trace code generation
|
||||
static internal string GenerateMsdnTraceCode(string traceSource, string traceCodeString)
|
||||
{
|
||||
return string.Format(CultureInfo.InvariantCulture,
|
||||
"http://msdn.microsoft.com/{0}/library/{1}.{2}.aspx",
|
||||
CultureInfo.CurrentCulture.Name,
|
||||
traceSource, traceCodeString);
|
||||
}
|
||||
|
||||
#pragma warning disable 56500
|
||||
internal void TraceTransfer(Guid newId)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
if (this.ShouldUseActivity)
|
||||
#pragma warning restore 618
|
||||
{
|
||||
Guid oldId = LegacyDiagnosticTrace.ActivityId;
|
||||
if (newId != oldId)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
if (this.HaveListeners)
|
||||
#pragma warning restore 618
|
||||
{
|
||||
try
|
||||
{
|
||||
this.TraceSource.TraceTransfer(0, null, newId);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (Fx.IsFatal(e))
|
||||
{
|
||||
throw;
|
||||
}
|
||||
LogTraceFailure(null, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnShutdownTracing()
|
||||
{
|
||||
if (null != this.TraceSource)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
if (this.Level != SourceLevels.Off)
|
||||
{
|
||||
if (this.ShouldTrace(TraceEventType.Information))
|
||||
#pragma warning restore 618
|
||||
{
|
||||
Dictionary<string, string> values = new Dictionary<string, string>(3);
|
||||
values["AppDomain.FriendlyName"] = AppDomain.CurrentDomain.FriendlyName;
|
||||
values["ProcessName"] = DiagnosticTraceBase.ProcessName;
|
||||
values["ProcessId"] = DiagnosticTraceBase.ProcessId.ToString(CultureInfo.CurrentCulture);
|
||||
this.TraceEvent(TraceEventType.Information, DiagnosticsTraceCode.AppDomainUnload, LegacyDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "AppDomainUnload"), TraceSR.GetString(TraceSR.TraceCodeAppDomainUnload),
|
||||
new DictionaryTraceRecord(values), null, null);
|
||||
}
|
||||
this.TraceSource.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnUnhandledException(Exception exception)
|
||||
{
|
||||
TraceEvent(TraceEventType.Critical, DiagnosticsTraceCode.UnhandledException, "UnhandledException", TraceSR.GetString(TraceSR.UnhandledException), null, exception, null);
|
||||
}
|
||||
|
||||
public bool ShouldLogPii
|
||||
{
|
||||
get
|
||||
{
|
||||
PiiTraceSource traceSource = this.TraceSource as PiiTraceSource;
|
||||
if (traceSource != null)
|
||||
{
|
||||
return traceSource.ShouldLogPii;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
PiiTraceSource traceSource = this.TraceSource as PiiTraceSource;
|
||||
if (traceSource != null)
|
||||
{
|
||||
traceSource.ShouldLogPii = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BuildTrace(TraceEventType type, string msdnTraceCode, string description, TraceRecord trace,
|
||||
Exception exception, object source, out TraceXPathNavigator navigator)
|
||||
{
|
||||
PlainXmlWriter xmlWriter = new PlainXmlWriter(LegacyDiagnosticTrace.MaxTraceSize);
|
||||
navigator = xmlWriter.Navigator;
|
||||
|
||||
this.BuildTrace(xmlWriter, type, msdnTraceCode, description, trace, exception, source);
|
||||
|
||||
if (!ShouldLogPii)
|
||||
{
|
||||
navigator.RemovePii(DiagnosticStrings.HeadersPaths);
|
||||
}
|
||||
}
|
||||
|
||||
void BuildTrace(PlainXmlWriter xml, TraceEventType type, string msdnTraceCode, string description,
|
||||
TraceRecord trace, Exception exception, object source)
|
||||
{
|
||||
xml.WriteStartElement(DiagnosticStrings.TraceRecordTag);
|
||||
xml.WriteAttributeString(DiagnosticStrings.NamespaceTag, LegacyDiagnosticTrace.TraceRecordVersion);
|
||||
xml.WriteAttributeString(DiagnosticStrings.SeverityTag, DiagnosticTraceBase.LookupSeverity(type));
|
||||
|
||||
xml.WriteElementString(DiagnosticStrings.TraceCodeTag, msdnTraceCode);
|
||||
xml.WriteElementString(DiagnosticStrings.DescriptionTag, description);
|
||||
xml.WriteElementString(DiagnosticStrings.AppDomain, DiagnosticTraceBase.AppDomainFriendlyName);
|
||||
|
||||
if (source != null)
|
||||
{
|
||||
xml.WriteElementString(DiagnosticStrings.SourceTag, CreateSourceString(source));
|
||||
}
|
||||
|
||||
if (trace != null)
|
||||
{
|
||||
xml.WriteStartElement(DiagnosticStrings.ExtendedDataTag);
|
||||
xml.WriteAttributeString(DiagnosticStrings.NamespaceTag, trace.EventId);
|
||||
|
||||
trace.WriteTo(xml);
|
||||
|
||||
xml.WriteEndElement();
|
||||
}
|
||||
|
||||
if (exception != null)
|
||||
{
|
||||
xml.WriteStartElement(DiagnosticStrings.ExceptionTag);
|
||||
AddExceptionToTraceString(xml, exception);
|
||||
xml.WriteEndElement();
|
||||
}
|
||||
|
||||
xml.WriteEndElement();
|
||||
}
|
||||
|
||||
public override bool IsEnabled()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void TraceEventLogEvent(TraceEventType type, TraceRecord traceRecord)
|
||||
{
|
||||
TraceEvent(type,
|
||||
DiagnosticsTraceCode.EventLog, LegacyDiagnosticTrace.GenerateMsdnTraceCode("System.ServiceModel.Diagnostics", "EventLog"),
|
||||
TraceSR.GetString(TraceSR.TraceCodeEventLog),
|
||||
traceRecord, null, null);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,58 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
#if !NO_CONFIGURATION
|
||||
namespace System.ServiceModel.Configuration
|
||||
{
|
||||
using System.Configuration;
|
||||
|
||||
internal class MachineSettingsSection : ConfigurationSection
|
||||
{
|
||||
static bool enableLoggingKnownPii;
|
||||
static bool hasInitialized = false;
|
||||
static object syncRoot = new object();
|
||||
|
||||
const string enableLoggingKnownPiiKey = "enableLoggingKnownPii";
|
||||
ConfigurationPropertyCollection properties;
|
||||
|
||||
protected override ConfigurationPropertyCollection Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.properties == null)
|
||||
{
|
||||
ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection();
|
||||
properties.Add(new ConfigurationProperty(MachineSettingsSection.enableLoggingKnownPiiKey, typeof(System.Boolean), false, null, null, System.Configuration.ConfigurationPropertyOptions.None));
|
||||
this.properties = properties;
|
||||
}
|
||||
return this.properties;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool EnableLoggingKnownPii
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!hasInitialized)
|
||||
{
|
||||
lock (syncRoot)
|
||||
{
|
||||
if (!hasInitialized)
|
||||
{
|
||||
MachineSettingsSection machineSettingsSection = (MachineSettingsSection)ConfigurationManager.GetSection("system.serviceModel/machineSettings");
|
||||
enableLoggingKnownPii = (bool)machineSettingsSection[MachineSettingsSection.enableLoggingKnownPiiKey];
|
||||
hasInitialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return enableLoggingKnownPii;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1,22 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Runtime;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Security;
|
||||
|
||||
static class NativeMethods
|
||||
{
|
||||
const string ADVAPI32 = "advapi32.dll";
|
||||
|
||||
[DllImport(ADVAPI32, CharSet = System.Runtime.InteropServices.CharSet.Unicode, SetLastError = true)]
|
||||
[ResourceExposure(ResourceScope.Machine)]
|
||||
[Fx.Tag.SecurityNote(Critical = "Returns security critical type SafeEventLogWriteHandle.")]
|
||||
[SecurityCritical]
|
||||
internal static extern SafeEventLogWriteHandle RegisterEventSource(string uncServerName, string sourceName);
|
||||
}
|
||||
}
|
@ -1,116 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
#if !NO_CONFIGURATION
|
||||
using System.Configuration;
|
||||
#endif
|
||||
using System.Diagnostics;
|
||||
using System.Runtime;
|
||||
using System.Runtime.Diagnostics;
|
||||
#if !NO_CONFIGURATION
|
||||
using System.ServiceModel.Configuration;
|
||||
#endif
|
||||
|
||||
class PiiTraceSource : TraceSource
|
||||
{
|
||||
string eventSourceName = String.Empty;
|
||||
internal const string LogPii = "logKnownPii";
|
||||
bool shouldLogPii = false;
|
||||
bool initialized = false;
|
||||
object localSyncObject = new object();
|
||||
|
||||
internal PiiTraceSource(string name, string eventSourceName)
|
||||
: base(name)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
Fx.Assert(!String.IsNullOrEmpty(eventSourceName), "Event log source name must be valid");
|
||||
#pragma warning restore 618
|
||||
this.eventSourceName = eventSourceName;
|
||||
}
|
||||
|
||||
internal PiiTraceSource(string name, string eventSourceName, SourceLevels levels)
|
||||
: base(name, levels)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
Fx.Assert(!String.IsNullOrEmpty(eventSourceName), "Event log source name must be valid");
|
||||
#pragma warning restore 618
|
||||
this.eventSourceName = eventSourceName;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
if (!this.initialized)
|
||||
{
|
||||
lock (localSyncObject)
|
||||
{
|
||||
if (!this.initialized)
|
||||
{
|
||||
string attributeValue = this.Attributes[PiiTraceSource.LogPii];
|
||||
bool shouldLogPii = false;
|
||||
if (!string.IsNullOrEmpty(attributeValue))
|
||||
{
|
||||
if (!bool.TryParse(attributeValue, out shouldLogPii))
|
||||
{
|
||||
shouldLogPii = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (shouldLogPii)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
System.Runtime.Diagnostics.EventLogger logger = new System.Runtime.Diagnostics.EventLogger(this.eventSourceName, null);
|
||||
#pragma warning restore 618
|
||||
#if !NO_CONFIGURATION
|
||||
if (MachineSettingsSection.EnableLoggingKnownPii)
|
||||
#else
|
||||
if (false)
|
||||
#endif
|
||||
{
|
||||
logger.LogEvent(TraceEventType.Information,
|
||||
(ushort)System.Runtime.Diagnostics.EventLogCategory.MessageLogging,
|
||||
(uint)System.Runtime.Diagnostics.EventLogEventId.PiiLoggingOn,
|
||||
false);
|
||||
this.shouldLogPii = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.LogEvent(TraceEventType.Error,
|
||||
(ushort)System.Runtime.Diagnostics.EventLogCategory.MessageLogging,
|
||||
(uint)System.Runtime.Diagnostics.EventLogEventId.PiiLoggingNotAllowed,
|
||||
false);
|
||||
}
|
||||
}
|
||||
this.initialized = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override string[] GetSupportedAttributes()
|
||||
{
|
||||
return new string[] { PiiTraceSource.LogPii };
|
||||
}
|
||||
|
||||
internal bool ShouldLogPii
|
||||
{
|
||||
get
|
||||
{
|
||||
// ShouldLogPii is called very frequently, don't call Initialize unless we have to.
|
||||
if (!this.initialized)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
return this.shouldLogPii;
|
||||
}
|
||||
set
|
||||
{
|
||||
// If you call this, you know what you're doing
|
||||
this.initialized = true;
|
||||
this.shouldLogPii = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,220 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using System.Xml;
|
||||
using System.Runtime;
|
||||
using System.Diagnostics;
|
||||
|
||||
/// <summary>
|
||||
/// Very basic performance-oriented XmlWriter implementation. No validation/encoding is made.
|
||||
/// Namespaces are not supported
|
||||
/// Minimal formatting support
|
||||
/// </summary>
|
||||
internal class PlainXmlWriter : XmlWriter
|
||||
{
|
||||
internal class MaxSizeExceededException : Exception
|
||||
{
|
||||
}
|
||||
|
||||
TraceXPathNavigator navigator;
|
||||
bool writingAttribute = false;
|
||||
string currentAttributeName;
|
||||
string currentAttributePrefix;
|
||||
string currentAttributeNs;
|
||||
string currentAttributeText = string.Empty;
|
||||
|
||||
public PlainXmlWriter()
|
||||
: this(-1) //no quota
|
||||
{
|
||||
}
|
||||
|
||||
public PlainXmlWriter(int maxSize)
|
||||
{
|
||||
this.navigator = new TraceXPathNavigator(maxSize);
|
||||
}
|
||||
|
||||
public TraceXPathNavigator Navigator
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.navigator;
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteStartDocument() { }
|
||||
public override void WriteStartDocument(bool standalone) { }
|
||||
public override void WriteDocType(string name, string pubid, string sysid, string subset) { }
|
||||
public override void WriteEndDocument() { }
|
||||
|
||||
public override string LookupPrefix(string ns)
|
||||
{
|
||||
return this.navigator.LookupPrefix(ns);
|
||||
}
|
||||
|
||||
public override WriteState WriteState
|
||||
{
|
||||
get { return this.navigator.WriteState; }
|
||||
}
|
||||
|
||||
public override XmlSpace XmlSpace
|
||||
{
|
||||
get { return XmlSpace.Default; }
|
||||
}
|
||||
|
||||
public override string XmlLang
|
||||
{
|
||||
get { return string.Empty; }
|
||||
}
|
||||
|
||||
public override void WriteValue(object value)
|
||||
{
|
||||
this.navigator.AddText(value.ToString());
|
||||
}
|
||||
|
||||
public override void WriteValue(string value)
|
||||
{
|
||||
this.navigator.AddText(value);
|
||||
}
|
||||
|
||||
public override void WriteBase64(byte[] buffer, int offset, int count) { }
|
||||
|
||||
public override void WriteStartElement(string prefix, string localName, string ns)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
Fx.Assert(!String.IsNullOrEmpty(localName), "");
|
||||
#pragma warning restore 618
|
||||
if (String.IsNullOrEmpty(localName))
|
||||
{
|
||||
throw new ArgumentNullException("localName");
|
||||
}
|
||||
|
||||
this.navigator.AddElement(prefix, localName, ns);
|
||||
}
|
||||
|
||||
public override void WriteFullEndElement()
|
||||
{
|
||||
WriteEndElement();
|
||||
}
|
||||
|
||||
public override void WriteEndElement()
|
||||
{
|
||||
this.navigator.CloseElement();
|
||||
}
|
||||
|
||||
public override void WriteStartAttribute(string prefix, string localName, string ns)
|
||||
{
|
||||
#pragma warning disable 618
|
||||
Fx.Assert(!this.writingAttribute, "");
|
||||
#pragma warning restore 618
|
||||
if (this.writingAttribute)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
|
||||
this.currentAttributeName = localName;
|
||||
this.currentAttributePrefix = prefix;
|
||||
this.currentAttributeNs = ns;
|
||||
this.currentAttributeText = string.Empty;
|
||||
this.writingAttribute = true;
|
||||
}
|
||||
|
||||
public override void WriteEndAttribute()
|
||||
{
|
||||
#pragma warning disable 618
|
||||
Fx.Assert(this.writingAttribute, "");
|
||||
#pragma warning restore 618
|
||||
if (!this.writingAttribute)
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
this.navigator.AddAttribute(this.currentAttributeName, this.currentAttributeText, this.currentAttributeNs, this.currentAttributePrefix);
|
||||
this.writingAttribute = false;
|
||||
}
|
||||
|
||||
public override void WriteCData(string text)
|
||||
{
|
||||
this.WriteRaw("<![CDATA[" + text + "]]>");
|
||||
}
|
||||
|
||||
public override void WriteComment(string text)
|
||||
{
|
||||
this.navigator.AddComment(text);
|
||||
}
|
||||
|
||||
public override void WriteProcessingInstruction(string name, string text)
|
||||
{
|
||||
this.navigator.AddProcessingInstruction(name, text);
|
||||
}
|
||||
|
||||
public override void WriteEntityRef(string name)
|
||||
{
|
||||
}
|
||||
|
||||
public override void WriteCharEntity(char ch)
|
||||
{
|
||||
}
|
||||
|
||||
public override void WriteSurrogateCharEntity(char lowChar, char highChar)
|
||||
{
|
||||
}
|
||||
|
||||
public override void WriteWhitespace(string ws)
|
||||
{
|
||||
}
|
||||
|
||||
public override void WriteString(string text)
|
||||
{
|
||||
if (this.writingAttribute)
|
||||
{
|
||||
currentAttributeText += text;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.WriteValue(text);
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteChars(Char[] buffer, int index, int count)
|
||||
{
|
||||
// Exceptions being thrown as per data found at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxmlxmlwriterclasswritecharstopic.asp
|
||||
if (buffer == null)
|
||||
{
|
||||
throw new ArgumentNullException("buffer");
|
||||
}
|
||||
if (index < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("index");
|
||||
}
|
||||
if (count < 0)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("count");
|
||||
}
|
||||
if ((buffer.Length - index) < count)
|
||||
{
|
||||
throw new ArgumentException(TraceSR.GetString(TraceSR.WriteCharsInvalidContent));
|
||||
}
|
||||
this.WriteString(new string(buffer, index, count));
|
||||
}
|
||||
|
||||
public override void WriteRaw(String data)
|
||||
{
|
||||
this.WriteString(data);
|
||||
}
|
||||
|
||||
public override void WriteRaw(Char[] buffer, int index, int count)
|
||||
{
|
||||
this.WriteChars(buffer, index, count);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
}
|
||||
|
||||
public override void Flush()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Runtime.Versioning;
|
||||
using System.Globalization;
|
||||
using System.Diagnostics;
|
||||
using System.Security;
|
||||
using System.Runtime;
|
||||
|
||||
[Fx.Tag.SecurityNote(Critical = "Usage of SafeHandleZeroOrMinusOneIsInvalid, which is protected by a LinkDemand and InheritanceDemand")]
|
||||
[SecurityCritical]
|
||||
sealed class SafeEventLogWriteHandle : SafeHandleZeroOrMinusOneIsInvalid
|
||||
{
|
||||
// Note: RegisterEventSource returns 0 on failure
|
||||
[Fx.Tag.SecurityNote(Critical = "Usage of SafeHandleZeroOrMinusOneIsInvalid, which is protected by a LinkDemand and InheritanceDemand")]
|
||||
[SecurityCritical]
|
||||
SafeEventLogWriteHandle() : base(true) { }
|
||||
|
||||
[ResourceConsumption(ResourceScope.Machine)]
|
||||
[Fx.Tag.SecurityNote(Critical = "Usage of SafeHandleZeroOrMinusOneIsInvalid, which is protected by a LinkDemand and InheritanceDemand")]
|
||||
[SecurityCritical]
|
||||
internal static SafeEventLogWriteHandle RegisterEventSource(string uncServerName, string sourceName)
|
||||
{
|
||||
SafeEventLogWriteHandle retval = NativeMethods.RegisterEventSource(uncServerName, sourceName);
|
||||
int error = Marshal.GetLastWin32Error();
|
||||
if (retval.IsInvalid)
|
||||
{
|
||||
Debug.Print("SafeEventLogWriteHandle::RegisterEventSource[" + uncServerName + ", " + sourceName + "] Failed. Last Error: " +
|
||||
error.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
[DllImport("advapi32", SetLastError = true)]
|
||||
[ResourceExposure(ResourceScope.None)]
|
||||
private static extern bool DeregisterEventSource(IntPtr hEventLog);
|
||||
|
||||
#pragma warning disable 56523
|
||||
[Fx.Tag.SecurityNote(Critical = "Usage of SafeHandleZeroOrMinusOneIsInvalid, which is protected by a LinkDemand and InheritanceDemand")]
|
||||
[SecurityCritical]
|
||||
override protected bool ReleaseHandle()
|
||||
{
|
||||
return DeregisterEventSource(this.handle);
|
||||
}
|
||||
#pragma warning restore 56523
|
||||
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
//------------------------------------------------------------
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
//------------------------------------------------------------
|
||||
|
||||
namespace System.ServiceModel.Diagnostics
|
||||
{
|
||||
enum TraceSourceKind
|
||||
{
|
||||
DiagnosticTraceSource,
|
||||
PiiTraceSource
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user