private static object[] ProcessEvent(HandleExternalEventActivity activity, ActivityExecutionContext context, object msg, Type interfaceType, string operation)
        {
            IMethodMessage message = msg as IMethodMessage;

            if (message == null)
            {
                Exception excp = msg as Exception;
                if (excp != null)
                {
                    throw excp;
                }
                throw new InvalidOperationException(SR.GetString(SR.Error_InvalidLocalServiceMessage));
            }

            CorrelationService.InvalidateCorrelationToken(activity, interfaceType, operation, message.Args);

            IdentityContextData identityData =
                (IdentityContextData)message.LogicalCallContext.GetData(IdentityContextData.IdentityContext);

            ValidateRoles(activity, identityData.Identity);

            if (ProcessEventParameters(activity.ParameterBindings, message, interfaceType, operation))
            {
                return(message.Args);
            }

            return(null);
        }
예제 #2
0
        private void ProcessMessage(ActivityExecutionContext context, object msg, Type interfaceType, string operation)
        {
            IMethodMessage message = msg as IMethodMessage;

            if (message == null)
            {
                Exception exception = msg as Exception;
                if (exception != null)
                {
                    throw exception;
                }
                throw new ArgumentNullException("msg");
            }
            CorrelationService.InvalidateCorrelationToken(this, interfaceType, operation, message.Args);
            IdentityContextData data = (IdentityContextData)message.LogicalCallContext.GetData("__identitycontext__");

            InboundActivityHelper.ValidateRoles(this, data.Identity);
            this.ProcessParameters(context, message, interfaceType, operation);
            base.RaiseEvent(InputReceivedEvent, this, EventArgs.Empty);
        }