2009-06-08 12 views
5

Estoy teniendo un pagemethod a la que le doy una llamada de mi JavaScript dicenObtención de Detalles de la excepción de ASP.NET PageMethods en el cliente

Pagemethods.MyMethod(MyParameter, onsucess, onfailure); 

En el código detrás, tengo algo como esto:

[WebMethod] 
public static void MyMethod(Param) 
{ 
    try{ 
    //DoSomething.. 
    } 
    catch(exception ex) 
    { 
     //Log the exception and rethrow 
     throw new exception(ex.innerexception); 
    } 
} 

Ahora el problema que enfrentamos es:

Cada vez que me pongo una excepción, I rE emitir la excepción del código detrás

Pero en el método onfailure, acabo de recibir un mensaje genérico diciendo que "el método del servidor myMethod falló con el error siguiente:"

que no parecen obtener los detalles de la excepción y sólo eso excepción genérica,

¿Cómo puedo obtener los detalles de la excepción en JavaScript, para manejarlo según el lado de UI/JavaScript.

He verificado que no hay ningún problema con la configuración de errores personalizados en web.config.

¿Puede alguien aclararme lo que está sucediendo aquí?

PD: he recorrido todas y cada una de las líneas de código y la excepción después de ser registrada vuelve a aparecer con los detalles de excepción adecuados, es decir, el mensaje.

+1

Su manejo de excepciones es muy malo. Después de registrar la excepción, simplemente use 'throw;'. Su código está destruyendo la traza de pila y perdiendo detalles de excepción. –

Respuesta

5

Por lo que yo entiendo, siempre y cuando usted tiene

<customErrors mode="off" /> 

en su web.config, el mensaje será devuelto al cliente. ¿Estás seguro de que tienes esta configuración?

Para visualizar el mensaje asociado con el error es necesario haber oassed el nombre de la función que el tercer parámetro de la llamada al método página: esta función podría ser tan simple como:

function onfailure(result) 
{ 
    alert(result.get_message()); 
} 

Eso es lo que tenemos y funciona bien

+0

Sí, tengo el modo de errores personalizados "off" Pero lo que no entiendo es por qué incluso recibe ese mensaje genérico "el método del servidor MyMethod falló con el siguiente error: y solo mucha información de error. – SudheerKovalam

+0

¿Qué código tiene en su función javascript onfailure? ¿Usas get_message para extraer el 'mensaje'? –

+0

así es como mi método onfailure se parece a función onCallFailure (ex, userContext, methodName) { alerta (ej.get_message());} Aquí es donde veo ese mensaje de error genérico que dije que obtuve – SudheerKovalam

1

Después de haber establecido <customErrors mode="off" /> en la sección <system.web> del web.config, pruebe estas funciones para obtener todos los detalles de la excepción de onfailure del PageMethod:

function onfailure(error) {     
    alert("Error: " + error.get_message() + "; " + 
     "Stack Trace: " + error.get_stackTrace() + "; " + 
     "Status Code: " + error.get_statusCode() + "; " + 
     "Exception Type: " + error.get_exceptionType() + "; " + 
     "Timed Out: " + error.get_timedOut()); 
} 

He encontrado que el código de estado del error es mucho más útil que el mensaje de error en sí.

Cuestiones relacionadas