Esempio n. 1
0
        /// <summary>
        /// Genera un log de tipo "Warning" cuando se ha intentado ejecutar
        /// un servicio que está deshabilitado.
        /// </summary>
        /// <param name="pConfig">configuración del servicio.</param>
        /// <param name="pServiceError">pServiceError </param> 
        internal static void LogNotAvailableExcecution(ServiceConfiguration pConfig, out ServiceError pServiceError)
        {
             pServiceError = new ServiceError();


            StringBuilder s = new StringBuilder();
     
            s.AppendLine("Se ha intentado ejecutar un servicio que está configurado como no disponible.");
            s.AppendLine("Service :");
            s.AppendLine(pConfig.Handler);
            pServiceError.Type = FwkExceptionTypes.TechnicalException.ToString();
            pServiceError.Message = s.ToString();
            pServiceError.ErrorId = "7006";
            pServiceError.Assembly = "Fwk.BusinessFacades";
            pServiceError.Class = "Audit";
            pServiceError.Namespace = "Fwk.BusinessFacades";
            pServiceError.UserName = Environment.UserName;
            pServiceError.Machine = Environment.MachineName;
            try
            {
                /// TODO: ver prefijo del log
                Event ev = new Event(EventType.Error,Fwk.Bases.ConfigurationsHelper.HostApplicationName, pServiceError.GetXml(), pServiceError.Machine, pServiceError.UserName);
                Fwk.Logging.StaticLogger.Log(ev);
            }
            catch { }
           
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pWebException"></param>
        /// <param name="pURL"></param>
        /// <returns>ServiceError <see cref="ServiceError"/></returns>
        private static ServiceError ProcessWebException(WebException pWebException, String pURL)
        {
            ServiceError wServiceError = new ServiceError();
            StringBuilder wMessage = new StringBuilder();

            wMessage.AppendLine("Ocurrio un problema al intentar conectarce al Servicio Web. " + GetGenericStatusCode(pWebException));


            wMessage.AppendLine("Verifique en el archivo de configuración si la direccion url del servicio es correcta");
            wMessage.AppendLine("y de ser asi si el servicio esta activo o el host donde esta alojado el IIS funciona correctamente");
            wMessage.AppendLine("--------------------------------------------------------------------------");
            wMessage.Append("URL : ");
            wMessage.AppendLine(pURL);
            wMessage.AppendLine();

            wMessage.AppendLine(pWebException.Message);

            wMessage.AppendLine("Verifique el código de estado mostrado arriba para revelar ");
            wMessage.AppendLine("la razón exacta por la que una solicitud no se realiza correctamente en el siguiente enlace: ");
            wMessage.AppendLine("http://support.microsoft.com/kb/318380/es");

            wServiceError.Message = wMessage.ToString();
            if (pWebException.InnerException != null)
                wServiceError.InnerMessageException = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(pWebException.InnerException); 

            wMessage = null;

            return wServiceError;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="configurationErrorsException"></param>
        /// <returns>ServiceError <see cref="ServiceError"/></returns>
        private static ServiceError ProcessConfigurationException(System.Configuration.ConfigurationException configurationErrorsException)
        {
            ServiceError wServiceError = new ServiceError();
            StringBuilder wMessage = new StringBuilder();

            
            wMessage.AppendLine("Ocurrio un problema al intentar obtener la confuguracion del cliente al conectarce al Servicio Web. ");
            wMessage.AppendLine("Verifique  si esta bien formado el archivo de configuracion AppConfig y si contiene la seccion que configura el Wrapper");
            wMessage.AppendLine();
            wMessage.AppendLine("Mensaje Web: ");
            wMessage.AppendLine(configurationErrorsException.Message);
            wServiceError.StackTrace = configurationErrorsException.StackTrace;
            wServiceError.Message = wMessage.ToString();
            if (configurationErrorsException.InnerException != null)
                wServiceError.InnerMessageException = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(configurationErrorsException.InnerException); 

            wMessage = null;

            return wServiceError;
        }
        /// <summary>
        /// Procesa las exepciones tipo SoapException <see cref="System.Web.Services.Protocols.SoapException"/>
        /// </summary>
        /// <param name="soapException">SoapException <see cref="System.Web.Services.Protocols.SoapException"/></param>
        /// <returns>ServiceError <see cref="ServiceError"/></returns>
        private static ServiceError ProcessSoapException(System.Web.Services.Protocols.SoapException soapException)
        {
            ServiceError wServiceError = new ServiceError();
            StringBuilder wMessage = new StringBuilder();

            
            wMessage.AppendLine("Ocurrio un problema al intentar ejecutar un servicio.");
            wMessage.AppendLine("Verifique que el despachador de servicio se encuentre actualizado con las ultimas librerias del Framework .");
            wMessage.AppendLine();
            wMessage.AppendLine("Mensaje SOAP: ");
            wMessage.AppendLine(soapException.Message);
            wServiceError.StackTrace= soapException.StackTrace;
            wServiceError.Message = wMessage.ToString();
            if (soapException.InnerException != null)
                wServiceError.InnerMessageException = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(soapException.InnerException); 

            wMessage = null;

            return wServiceError;
        }
        /// <summary>
        /// Procesa las exepciones no detectadas <see cref="System.Web.Services.Protocols.SoapException"/>
        /// </summary>
        /// <param name="pException">Exception por defecto producida <see cref="System.Web.Services.Protocols.SoapException"/></param>
        /// <returns>ServiceError <see cref="ServiceError"/></returns>
        private static ServiceError ProcessDefaultException(Exception pException)
        {
            ServiceError wServiceError = new ServiceError();
            StringBuilder wMessage = new StringBuilder();


            wMessage.AppendLine("Ocurrio un problema al intentar ejecutar un servicio.");
            wMessage.AppendLine();
            wMessage.AppendLine("Mensaje: ");
            wMessage.AppendLine(pException.Message);
            wServiceError.StackTrace = pException.StackTrace;
            wServiceError.Message = wMessage.ToString();
            wServiceError.ErrorId = "6000";
            if (pException.InnerException != null)
                wServiceError.InnerMessageException = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(pException.InnerException); 

            wMessage = null;
          

            return wServiceError;
        }
Esempio n. 6
0
        /// <summary>
        /// Completa el error del que va dentro del Request con informacion de :
        /// Assembly, Class, Namespace, UserName,  InnerException, etc
        /// </summary>
        /// <param name="pServiceError"></param>
        /// <param name="pException"></param>
        static void FillServiceError(ServiceError pServiceError, Exception pException)
        {
            if (ExceptionHelper.GetFwkExceptionTypes(pException) != FwkExceptionTypes.OtherException)
                pServiceError.Type = ExceptionHelper.GetFwkExceptionTypesName(pException);
            else
                pServiceError.Type = pException.GetType().Name;

            pServiceError.UserName = Environment.UserName;
            pServiceError.Machine = Environment.MachineName;
            if (string.IsNullOrEmpty(ConfigurationsHelper.HostApplicationName))
                pServiceError.Source = "Despachador de servicios en " + Environment.MachineName;
            else
                pServiceError.Source = ConfigurationsHelper.HostApplicationName;

            //if (pException.InnerException != null)
            pServiceError.InnerMessageException = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(pException);
        }
Esempio n. 7
0
        /// <summary>
        /// Ejecuta el servicio de negocio.
        /// </summary>
        /// <param name="pData">XML con datos de entrada.</param>
        /// <param name="pServiceConfiguration">configuración del servicio.</param>
        /// <param name="pserviError"></param>
        /// <returns>XML que representa el resultado de la  ejecución del servicio.</returns>
        /// <date>2007-08-07T00:00:00</date>
        /// <author>moviedo</author>
        static string RunService(string pData, ServiceConfiguration pServiceConfiguration, out ServiceError pserviError)
        {
            IServiceContract wRequest = null;
            IServiceContract wResponse = null;

            // Obtencion del Request.
            wRequest = (IServiceContract)ReflectionFunctions.CreateInstance(pServiceConfiguration.Request);

            if (wRequest == null)
            {
                System.Text.StringBuilder wMessage = new StringBuilder();

                wMessage.Append("Verifique que este assemblie se encuentra en el host del despachador de servicios");
                wMessage.Append("El servicio " + pServiceConfiguration.Handler);
                wMessage.AppendLine(" no se puede ejecutar debido a que esta faltando el assembly ");
                wMessage.Append(pServiceConfiguration.Request);
                wMessage.Append(" en el despachador de servicio");

                throw GetTechnicalException(wMessage.ToString(), "7002", null);
            }

            wRequest.SetXml(pData);
            wRequest.InitializeServerContextInformation();


            wResponse = RunService(wRequest, pServiceConfiguration, out pserviError);


            return wResponse.GetXml();
        }
Esempio n. 8
0
        static ServiceError GetServiceError(Exception e)
        {
            ServiceError err = null;
            if ((e is TechnicalException))
            {
                TechnicalException tx = (TechnicalException)e;
                err = new ServiceError();

                err.ErrorId = tx.ErrorId;
                err.Message = tx.Message;
                err.Source = tx.Source;

                FillServiceError(err, tx);

            }

            if ((e is FunctionalException))
            {
                FunctionalException fx = (FunctionalException)e;
                err = new ServiceError();
                err.ErrorId = fx.ErrorId;
                err.Message = fx.Message;
                err.Source = fx.Source;
                err.Severity = Enum.GetName(typeof(FunctionalException.ExceptionSeverity), fx.Severity);
                FillServiceError(err, fx);

            }
            //if (e is System.TypeLoadException)
            //{

            //    System.Text.StringBuilder wMessage = new StringBuilder();
            //    err = new ServiceError();

            //    err.ErrorId = "7002";
            //    wMessage.Append("No se encuentra el o los assemblies para cargar el servicio " + pServiceConfiguration.Name);
            //    wMessage.AppendLine();
            //    wMessage.AppendLine(e.Message);
            //    err.Message = wMessage.ToString();
            //    FillServiceError(err, e);

            //}

            if (err == null)
            {
                err = new ServiceError();
                if (e.InnerException != null)
                    e = e.InnerException;
                err.Message = e.Message;
                FillServiceError(err, e);
            }
            return err;
        }
Esempio n. 9
0
        /// <summary>
        /// Ejecuta el servicio de negocio.
        /// </summary>
        /// <param name="pRequest">Request de entrada que se pasa al servicio</param>
        /// <param name="pServiceConfiguration">configuración del servicio.</param>
        /// <param name="pserviError">serviError</param> 
        /// <returns>XML que representa el resultado de la  ejecución del servicio.</returns>
        /// <date>2007-08-07T00:00:00</date>
        /// <author>moviedo</author>
        static IServiceContract RunService(IServiceContract pRequest, ServiceConfiguration pServiceConfiguration, out ServiceError pserviError)
        {
            IServiceContract wResponse = null;

            try
            {
                pRequest.InitializeServerContextInformation();
                // obtención del Response.
                Type wServiceType = ReflectionFunctions.CreateType(pServiceConfiguration.Handler);

                object wServiceInstance = Activator.CreateInstance(wServiceType);
                wResponse =
                    (wServiceType.GetMethod("Execute").Invoke(wServiceInstance, new object[] { pRequest }) as
                     IServiceContract);

                wResponse.InitializeServerContextInformation();


            }

            #region [manage Exception]
            catch (System.IO.FileNotFoundException ex)
            {

                wResponse = GetResponse(pServiceConfiguration);// (IServiceContract)ReflectionFunctions.CreateInstance(pServiceConfiguration.Response);

                wResponse.Error = new ServiceError();
                System.Text.StringBuilder wMessage = new StringBuilder();

                wResponse.Error.ErrorId = "7003";

                #region Message
                wMessage.Append("El despachador de servicio no pudo encontrar alguna de los siguientes assemblies \r\n");

                wMessage.Append("o alguna de sus dependencias: \r\n");

                wMessage.Append("Servicio: ");
                wMessage.Append(pServiceConfiguration.Handler);
                wMessage.Append(Environment.NewLine);

                wMessage.Append("Request: ");
                wMessage.Append(pServiceConfiguration.Request);
                wMessage.Append(Environment.NewLine);

                wMessage.Append("Response: ");
                wMessage.Append(pServiceConfiguration.Response);
                wMessage.Append(Environment.NewLine);

                wMessage.Append("Mensaje original :");
                wMessage.Append(Environment.NewLine);
                wMessage.Append(ex.Message);
                #endregion

                wResponse.Error.Message = wMessage.ToString();
                FillServiceError(wResponse.Error, ex);

            }
            catch (System.Reflection.TargetInvocationException ex)
            {
                wResponse = GetResponse(pServiceConfiguration);
                wResponse.Error = GetServiceError(ex.InnerException);

            }
            catch (TypeLoadException tl)
            {
                wResponse = GetResponse(pServiceConfiguration);
                System.Text.StringBuilder wMessage = new StringBuilder();
                wResponse.Error = new ServiceError();

                wResponse.Error.ErrorId = "7002";
                wMessage.Append("No se encuentra el o los assemblies para cargar el servicio " + pServiceConfiguration.Name);
                wMessage.AppendLine();
                wMessage.AppendLine(tl.Message);
                wResponse.Error.Message = wMessage.ToString();
                FillServiceError(wResponse.Error, tl);
            }
            catch (Exception ex)
            {
                wResponse = GetResponse(pServiceConfiguration);// (IServiceContract)ReflectionFunctions.CreateInstance(pServiceConfiguration.Response);
                wResponse.Error = GetServiceError(ex);
            }

            #endregion

            pserviError = wResponse.Error;

            #region < Log >
            //Audito ensegundo plano
            Action actionAudit = () => { DoAudit(pServiceConfiguration, pRequest, wResponse); };
            Task.Factory.StartNew(actionAudit);


            #endregion




            return wResponse;

        }