Pregunta

Tengo un proyecto BizTalk 2006 R2 (utilizado con la guía de ESB 1) llamo desde la orquestación a un método estático en el código C#, este método usa una clase para cargar un archivo de datos en el cuerpo de mensajes XLANG en la parte 0 cuando paso FilePath que no lo hace. Existen la clase interior de captura la excepción, pero no lo vaya (en el método estático hay un bloque de captura y en la orquestación existe el manejo real de la excepción)

El método estático es:


public static XLANGMessage LoadFileIntoMessage(XLANGMessage message, string filePath,Encoding encoding)
        {
            try
            {
                IStreamFactory sf = new FileStreamFactory(filePath,encoding);

                message[0].LoadFrom(sf);
                return message;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

La clase que carga la secuencia del archivo es:


private class FileStreamFactory : IStreamFactory
        {
            string _fname;
            Encoding _encoding;

            public FileStreamFactory(string fname,Encoding encoding)
            {
                _fname = fname;
                _encoding = encoding;
            }

            public Stream CreateStream()
            {
                try
                {
                    StreamReader sr;
                    sr = new StreamReader
                    (
                        _fname,
                        _encoding
                    );

                    return sr.BaseStream;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

Llamo al método estático de la orquestación y espero detectar la excepción en mi orquestación después de la clase y el método lo obtiene.

¿Fue útil?

Solución

No estoy seguro de cuál es la pregunta real aquí ... ¿estás hablando de cómo atrapar la excepción en la orquestación? ¿Cómo hacer que ingrese al sistema de manejo de excepciones ESB o qué?

Para manejar una excepción en una orquestación, debe usar una forma de alcance (donde coloca el código/formas que pueden lanzar la excepción) y luego agregarle un controlador de excepción (como un bloque de try/captación).

Para las cosas de ESB, vea aquí: http://msdn.microsoft.com/en-us/library/ee250235(v=bts.10).aspx

Finalmente, permítame decir: No maneje las excepciones como ya está haciendo en su código. No debes obtener una excepción solo para volver a lanzarla. Es una práctica de programación muy pobre, duele el rendimiento y también hará que pierda el rastro de la excepción original, lo que dificulta diagnosticar y resolver cualquier problema. Ver http://winterdom.com/2002/09/rethrowingexceptionsinc

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top