Ejemplo n.º 1
0
        private void InvalidateCache(List <OrganizationServiceCachePluginMessage> batchedPluginMessage)
        {
            //Set Properties
            var cacheMessage = new OrganizationServiceCacheBatchedPluginMessage();

            cacheMessage.MessageName          = batchedPluginMessage[0].MessageName;
            cacheMessage.RelatedEntities      = batchedPluginMessage[0].RelatedEntities;
            cacheMessage.Relationship         = batchedPluginMessage[0].Relationship;
            cacheMessage.Target               = batchedPluginMessage[0].Target;
            cacheMessage.BatchedPluginMessage = batchedPluginMessage;

            var messageName = batchedPluginMessage[0].Target != null
                                ? batchedPluginMessage[0].Target.LogicalName
                                : batchedPluginMessage[0].MessageName;

            ADXTrace.Instance.TraceInfo(TraceCategory.Application, string.Format("Posting Batch Cache Invalidation Request for {0}  with Count {1} ", messageName, batchedPluginMessage.Count));

            retryPolicy.Value.ExecuteAction(() => CacheInvalidation.ProcessMessage(cacheMessage));
        }
Ejemplo n.º 2
0
        private void ProcessNotification(CancellationToken cancellationToken, PluginMessageRequest request)
        {
            try
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return;
                }

                if (!WebNotificationCryptography.ValidateRequest(request.Authorization))
                {
                    WebNotificationEventSource.Log.AuthorizationValidationFailed();

                    return;
                }

                var message = this.GetMessage(request);

                if (message == null)
                {
                    WebNotificationEventSource.Log.MessageInvalid();

                    return;
                }

                CacheInvalidation.ProcessMessage(message);

                if (SearchIndexApplicableMessages.Contains(message.MessageName, MessageComparer))
                {
                    var serviceContext = CrmConfigurationManager.CreateContext();
                    SearchIndexBuildRequest.ProcessMessage(message, serviceContext: serviceContext);
                }
            }
            catch (TaskCanceledException e)
            {
                ADXTrace.Instance.TraceWarning(TraceCategory.Application, e.Message);
            }
        }