You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			437 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			437 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------------------------
 | |
| // <copyright file="WebEventCodes.cs" company="Microsoft">
 | |
| //     Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| // </copyright>                                                                
 | |
| //------------------------------------------------------------------------------
 | |
| 
 | |
| namespace System.Web.Management {
 | |
| 
 | |
|     using System.Globalization;
 | |
|     using System.Collections;
 | |
|     using Debug=System.Web.Util.Debug;
 | |
|     using System.Security.Permissions;
 | |
| 
 | |
|     // this class is a container for pre-defined event codes
 | |
|     // all APIs will take integers so application defined
 | |
|     // codes or new codes added through servicing are supported
 | |
|     public sealed class WebEventCodes {
 | |
| 
 | |
|         private WebEventCodes() {
 | |
|         }
 | |
|         
 | |
|         static WebEventCodes()
 | |
|         {
 | |
|             InitEventArrayDimensions();
 | |
|         }
 | |
|         
 | |
|         // (not bit flags)
 | |
|         // we're not using an enum for extensibility reasons
 | |
|         public const int InvalidEventCode = -1;
 | |
|         public const int UndefinedEventCode = 0;
 | |
|         public const int UndefinedEventDetailCode = 0;
 | |
| 
 | |
|         // ----------------------------------
 | |
|         // Application Codes
 | |
|         // ----------------------------------
 | |
|         public const int ApplicationCodeBase = 1000;
 | |
|         public const int ApplicationStart = ApplicationCodeBase + 1;
 | |
|         public const int ApplicationShutdown = ApplicationCodeBase + 2;
 | |
|         public const int ApplicationCompilationStart = ApplicationCodeBase + 3;
 | |
|         public const int ApplicationCompilationEnd = ApplicationCodeBase + 4;
 | |
|         public const int ApplicationHeartbeat = ApplicationCodeBase + 5;
 | |
| 
 | |
|         internal const int ApplicationCodeBaseLast = ApplicationCodeBase + 5;
 | |
| 
 | |
|     
 | |
|         // ----------------------------------
 | |
|         // Request Codes
 | |
|         // ----------------------------------
 | |
|         public const int RequestCodeBase = 2000;
 | |
|         public const int RequestTransactionComplete = RequestCodeBase+1;
 | |
|         public const int RequestTransactionAbort = RequestCodeBase+2;
 | |
| 
 | |
|         internal const int RequestCodeBaseLast = RequestCodeBase+2;
 | |
| 
 | |
| 
 | |
|         // ----------------------------------
 | |
|         // Error Codes
 | |
|         // ----------------------------------
 | |
|         public const int ErrorCodeBase = 3000;
 | |
|     
 | |
|         // Errors during request processing related to client input
 | |
|         // or behavior
 | |
|         public const int RuntimeErrorRequestAbort = ErrorCodeBase + 1;
 | |
|         public const int RuntimeErrorViewStateFailure = ErrorCodeBase + 2;
 | |
|         public const int RuntimeErrorValidationFailure = ErrorCodeBase + 3;
 | |
|         public const int RuntimeErrorPostTooLarge = ErrorCodeBase + 4;
 | |
|         public const int RuntimeErrorUnhandledException = ErrorCodeBase + 5;
 | |
| 
 | |
|         // Errors related to configuration or invalid code
 | |
|         public const int WebErrorParserError = ErrorCodeBase + 6;
 | |
|         public const int WebErrorCompilationError = ErrorCodeBase + 7;
 | |
|         public const int WebErrorConfigurationError = ErrorCodeBase + 8;
 | |
|         public const int WebErrorOtherError = ErrorCodeBase + 9;
 | |
|         public const int WebErrorPropertyDeserializationError = ErrorCodeBase + 10;
 | |
|         public const int WebErrorObjectStateFormatterDeserializationError = ErrorCodeBase + 11;
 | |
| 
 | |
|         public const int RuntimeErrorWebResourceFailure = ErrorCodeBase + 12;
 | |
| 
 | |
|         internal const int ErrorCodeBaseLast = ErrorCodeBase + 12;
 | |
|         
 | |
|     
 | |
|         // ----------------------------------
 | |
|         // Audit codes    
 | |
|         // ----------------------------------
 | |
|         public const int AuditCodeBase = 4000;
 | |
|         
 | |
|         // success codes
 | |
|         public const int AuditFormsAuthenticationSuccess = AuditCodeBase + 1;
 | |
|         public const int AuditMembershipAuthenticationSuccess = AuditCodeBase + 2;
 | |
|         public const int AuditUrlAuthorizationSuccess = AuditCodeBase + 3;
 | |
|         public const int AuditFileAuthorizationSuccess = AuditCodeBase + 4;
 | |
|         
 | |
|         // failure codes
 | |
|         public const int AuditFormsAuthenticationFailure = AuditCodeBase +5;
 | |
|         public const int AuditMembershipAuthenticationFailure = AuditCodeBase + 6;
 | |
|         public const int AuditUrlAuthorizationFailure = AuditCodeBase + 7;
 | |
|         public const int AuditFileAuthorizationFailure = AuditCodeBase + 8;
 | |
|         public const int AuditInvalidViewStateFailure = AuditCodeBase + 9;
 | |
|         public const int AuditUnhandledSecurityException = AuditCodeBase + 10;
 | |
|         public const int AuditUnhandledAccessException = AuditCodeBase + 11;
 | |
|         
 | |
|         internal const int AuditCodeBaseLast = AuditCodeBase + 11;
 | |
| 
 | |
|         // Misc events
 | |
|         public const int MiscCodeBase = 6000;
 | |
|         
 | |
|         public const int WebEventProviderInformation = MiscCodeBase + 1;
 | |
| 
 | |
|         internal const int MiscCodeBaseLast = MiscCodeBase + 1;
 | |
| 
 | |
|         // Last code base
 | |
|         internal const int LastCodeBase = 6000;
 | |
| 
 | |
|     
 | |
|         /////////////////////////////////////////////////////
 | |
|         // Detail Codes
 | |
|         /////////////////////////////////////////////////////
 | |
|         public const int ApplicationDetailCodeBase = 50000;
 | |
|         public const int ApplicationShutdownUnknown = ApplicationDetailCodeBase + 1;
 | |
|         public const int ApplicationShutdownHostingEnvironment = ApplicationDetailCodeBase + 2;
 | |
|         public const int ApplicationShutdownChangeInGlobalAsax = ApplicationDetailCodeBase + 3;
 | |
|         public const int ApplicationShutdownConfigurationChange = ApplicationDetailCodeBase + 4;
 | |
|         public const int ApplicationShutdownUnloadAppDomainCalled = ApplicationDetailCodeBase + 5;
 | |
|         public const int ApplicationShutdownChangeInSecurityPolicyFile = ApplicationDetailCodeBase + 6;
 | |
|         public const int ApplicationShutdownBinDirChangeOrDirectoryRename = ApplicationDetailCodeBase + 7;
 | |
|         public const int ApplicationShutdownBrowsersDirChangeOrDirectoryRename = ApplicationDetailCodeBase + 8;
 | |
|         public const int ApplicationShutdownCodeDirChangeOrDirectoryRename = ApplicationDetailCodeBase + 9;
 | |
|         public const int ApplicationShutdownResourcesDirChangeOrDirectoryRename = ApplicationDetailCodeBase + 10;
 | |
|         public const int ApplicationShutdownIdleTimeout = ApplicationDetailCodeBase + 11; 
 | |
|         public const int ApplicationShutdownPhysicalApplicationPathChanged = ApplicationDetailCodeBase + 12;
 | |
|         public const int ApplicationShutdownHttpRuntimeClose = ApplicationDetailCodeBase + 13;
 | |
|         public const int ApplicationShutdownInitializationError = ApplicationDetailCodeBase + 14;
 | |
|         public const int ApplicationShutdownMaxRecompilationsReached = ApplicationDetailCodeBase + 15;
 | |
|         public const int StateServerConnectionError = ApplicationDetailCodeBase + 16;
 | |
|         public const int ApplicationShutdownBuildManagerChange = ApplicationDetailCodeBase + 17;
 | |
|                 
 | |
|         // Audit detail codes
 | |
|         public const int AuditDetailCodeBase = 50200;
 | |
|         public const int InvalidTicketFailure = AuditDetailCodeBase + 1;
 | |
|         public const int ExpiredTicketFailure = AuditDetailCodeBase + 2;
 | |
|         public const int InvalidViewStateMac = AuditDetailCodeBase + 3;
 | |
|         public const int InvalidViewState = AuditDetailCodeBase + 4;
 | |
| 
 | |
|         // Web Event provider detail codes
 | |
|         public const int WebEventDetailCodeBase = 50300;
 | |
|         public const int SqlProviderEventsDropped = WebEventDetailCodeBase + 1;
 | |
| 
 | |
|         // Application extensions should start from here
 | |
|         public const int WebExtendedBase = 100000;
 | |
| 
 | |
|         internal static string MessageFromEventCode(int eventCode, int eventDetailCode) {
 | |
|             string  msg = null;
 | |
|             string  detailMsg = null;
 | |
| 
 | |
|             if (eventDetailCode != 0) {
 | |
|                 switch(eventDetailCode) {
 | |
|                 case ApplicationShutdownUnknown:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownUnknown);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownHostingEnvironment:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownHostingEnvironment);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownChangeInGlobalAsax:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownChangeInGlobalAsax);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownConfigurationChange:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownConfigurationChange);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownUnloadAppDomainCalled:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownUnloadAppDomainCalled);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownChangeInSecurityPolicyFile:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownChangeInSecurityPolicyFile);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownBinDirChangeOrDirectoryRename:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownBinDirChangeOrDirectoryRename);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownBrowsersDirChangeOrDirectoryRename:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownBrowsersDirChangeOrDirectoryRename);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownCodeDirChangeOrDirectoryRename:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownCodeDirChangeOrDirectoryRename);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownResourcesDirChangeOrDirectoryRename:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownResourcesDirChangeOrDirectoryRename);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownIdleTimeout:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownIdleTimeout);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownPhysicalApplicationPathChanged:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownPhysicalApplicationPathChanged);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownHttpRuntimeClose:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownHttpRuntimeClose);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownInitializationError:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownInitializationError);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownMaxRecompilationsReached:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownMaxRecompilationsReached);
 | |
|                     break;
 | |
| 
 | |
|                 case ApplicationShutdownBuildManagerChange:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ApplicationShutdownBuildManagerChange);
 | |
|                     break;
 | |
| 
 | |
|                 case StateServerConnectionError:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_StateServerConnectionError);
 | |
|                     break;
 | |
| 
 | |
|                 case InvalidTicketFailure:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_InvalidTicketFailure);
 | |
|                     break;
 | |
|                     
 | |
|                 case ExpiredTicketFailure:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_ExpiredTicketFailure);
 | |
|                     break;
 | |
|                     
 | |
|                 case InvalidViewStateMac:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_InvalidViewStateMac);
 | |
|                     break;
 | |
|                     
 | |
|                 case InvalidViewState:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_InvalidViewState);
 | |
|                     break;
 | |
|                     
 | |
|                 case SqlProviderEventsDropped:
 | |
|                     detailMsg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_detail_SqlProviderEventsDropped);
 | |
|                     break;
 | |
|                     
 | |
|                 default:
 | |
|                     break;
 | |
|                 }
 | |
|             }
 | |
|             
 | |
|             switch(eventCode) {
 | |
|             case ApplicationStart:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_ApplicationStart);
 | |
|                 break;
 | |
| 
 | |
|             case ApplicationShutdown:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_ApplicationShutdown);
 | |
|                 break;
 | |
|             
 | |
|             case ApplicationCompilationStart:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_ApplicationCompilationStart);
 | |
|                 break;
 | |
|             
 | |
|             case ApplicationCompilationEnd:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_ApplicationCompilationEnd);
 | |
|                 break;
 | |
|             
 | |
|             case ApplicationHeartbeat:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_ApplicationHeartbeat);
 | |
|                 break;
 | |
|                 
 | |
|             case RequestTransactionComplete:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RequestTransactionComplete);
 | |
|                 break;
 | |
|             
 | |
|             case RequestTransactionAbort:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RequestTransactionAbort);
 | |
|                 break;
 | |
|             
 | |
|             case RuntimeErrorRequestAbort:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RuntimeErrorRequestAbort);
 | |
|                 break;
 | |
|             
 | |
|             case RuntimeErrorViewStateFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RuntimeErrorViewStateFailure);
 | |
|                 break;
 | |
|             
 | |
|             case RuntimeErrorValidationFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RuntimeErrorValidationFailure);
 | |
|                 break;
 | |
|             
 | |
|             case RuntimeErrorPostTooLarge:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RuntimeErrorPostTooLarge);
 | |
|                 break;
 | |
|             
 | |
|             case RuntimeErrorUnhandledException:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_RuntimeErrorUnhandledException);
 | |
|                 break;
 | |
|             
 | |
|             case WebErrorParserError:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_WebErrorParserError);
 | |
|                 break;
 | |
|             
 | |
|             case WebErrorCompilationError:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_WebErrorCompilationError);
 | |
|                 break;
 | |
|             
 | |
|             case WebErrorConfigurationError:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_WebErrorConfigurationError);
 | |
|                 break;
 | |
|             
 | |
|             case AuditUnhandledSecurityException:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditUnhandledSecurityException);
 | |
|                 break;
 | |
| 
 | |
|             case AuditInvalidViewStateFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditInvalidViewStateFailure);
 | |
|                 break;
 | |
| 
 | |
|             case AuditFormsAuthenticationSuccess:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditFormsAuthenticationSuccess);
 | |
|                 break;
 | |
| 
 | |
|             case AuditUrlAuthorizationSuccess:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditUrlAuthorizationSuccess);
 | |
|                 break;
 | |
| 
 | |
|             case AuditFileAuthorizationFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditFileAuthorizationFailure);
 | |
|                 break;
 | |
| 
 | |
|             case AuditFormsAuthenticationFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditFormsAuthenticationFailure);
 | |
|                 break;
 | |
| 
 | |
|             case AuditFileAuthorizationSuccess:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditFileAuthorizationSuccess);
 | |
|                 break;
 | |
| 
 | |
|             case AuditMembershipAuthenticationSuccess:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditMembershipAuthenticationSuccess);
 | |
|                 break;
 | |
| 
 | |
|             case AuditMembershipAuthenticationFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditMembershipAuthenticationFailure);
 | |
|                 break;
 | |
| 
 | |
|             case AuditUrlAuthorizationFailure:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditUrlAuthorizationFailure);
 | |
|                 break;
 | |
| 
 | |
|             case AuditUnhandledAccessException:
 | |
|                 msg = WebBaseEvent.FormatResourceStringWithCache(SR.Webevent_msg_AuditUnhandledAccessException);
 | |
|                 break;
 | |
|                 
 | |
|             default:
 | |
|                 Debug.Assert(false, "ASP.NET event code " + eventCode.ToString(CultureInfo.InvariantCulture) + " doesn't have message string mapped to it");
 | |
|                 return String.Empty;
 | |
|             }
 | |
| 
 | |
|             if (detailMsg != null) {
 | |
|                 msg += " " + detailMsg;
 | |
|             }
 | |
| 
 | |
|             return msg;
 | |
|         }
 | |
| 
 | |
|         // Both WebBaseEvents and HealthMonitoringSectionHelper has to store information per {event type, event code}.
 | |
|         // But for system event type, eventCode and event type has a N:1 relationship.  Meaning every event
 | |
|         // code can be mapped to one and only one event type.  So instead of using {event type, event code} as
 | |
|         // the key, we can use just the event code as the key.
 | |
| 
 | |
|         // The simplest way is to use a hashtable.  But in order to boost performance, we store those
 | |
|         // information using an array with event code as the key.  However, because the event code range is not 
 | |
|         // continuous, and has large gap between categories, instead we use an NxM array, when N is number 
 | |
|         // of major event code categories (e.g. ApplicationCodeBase and RequestCodeBase), and M is the 
 | |
|         // max number of per category event code among all the catogories.
 | |
| 
 | |
|         // WebBaseEvents and HealthMonitoringSectionHelper will each maintain its own NxM arrays, and it
 | |
|         // depends on the following functions to calculate the sizes of the array, and to convert an event
 | |
|         // code into a (x,y) coordinate.
 | |
|         
 | |
|         internal static int[] s_eventArrayDimensionSizes = new int[2];
 | |
| 
 | |
|         internal static int GetEventArrayDimensionSize(int dim) {
 | |
|             Debug.Assert(dim == 0 || dim == 1, "dim == 0 || dim == 1");
 | |
| 
 | |
|             return s_eventArrayDimensionSizes[dim];
 | |
|         }
 | |
| 
 | |
|         // Convert an event code into a (x,y) coordinate.
 | |
|         internal static void GetEventArrayIndexsFromEventCode(int eventCode, out int index0, out int index1) {
 | |
|             index0 = eventCode/1000 - 1;
 | |
|             index1 = eventCode - (eventCode/1000)*1000 - 1;
 | |
| 
 | |
|             Debug.Assert(index0 >= 0 && index0 < GetEventArrayDimensionSize(0), "Index0 of system eventCode out of expected range: " + eventCode);
 | |
|             Debug.Assert(index1 >= 0 && index1 < GetEventArrayDimensionSize(1), "Index1 of system eventCode out of expected range: " + eventCode);
 | |
|         }
 | |
|         
 | |
|         static void InitEventArrayDimensions()
 | |
|         {
 | |
|             int sizeOf2ndDim = 0;
 | |
|             int size;
 | |
| 
 | |
|             // Below is the manual way to figure out the size of the 2nd dimension.
 | |
| 
 | |
|             size = WebEventCodes.ApplicationCodeBaseLast - WebEventCodes.ApplicationCodeBase;
 | |
|             if (size > sizeOf2ndDim) {
 | |
|                 sizeOf2ndDim = size;
 | |
|             }
 | |
| 
 | |
|             size = WebEventCodes.RequestCodeBaseLast - WebEventCodes.RequestCodeBase;
 | |
|             if (size > sizeOf2ndDim) {
 | |
|                 sizeOf2ndDim = size;
 | |
|             }
 | |
| 
 | |
|             size = WebEventCodes.ErrorCodeBaseLast - WebEventCodes.ErrorCodeBase;
 | |
|             if (size > sizeOf2ndDim) {
 | |
|                 sizeOf2ndDim = size;
 | |
|             }
 | |
| 
 | |
|             size = WebEventCodes.AuditCodeBaseLast - WebEventCodes.AuditCodeBase;
 | |
|             if (size > sizeOf2ndDim) {
 | |
|                 sizeOf2ndDim = size;
 | |
|             }
 | |
| 
 | |
|             size = WebEventCodes.MiscCodeBaseLast - WebEventCodes.MiscCodeBase;
 | |
|             if (size > sizeOf2ndDim) {
 | |
|                 sizeOf2ndDim = size;
 | |
|             }
 | |
| 
 | |
|             s_eventArrayDimensionSizes[0] = WebEventCodes.LastCodeBase/1000;
 | |
|             s_eventArrayDimensionSizes[1] = sizeOf2ndDim;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |