¿Cómo devolver el error de webmethod?

¿Cómo se devuelve un error en un método de página aspx decorado con WebMethod ?

Código de muestra

 $.ajax({ type: "POST", url: "./Default.aspx/GetData", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: AjaxSucceeded, error: AjaxFailed }); [WebMethod] public static string GetData() { } 

¿Cómo se devuelve un error de un método web? Así que uno puede ser capaz de usar la parte de error jquery para mostrar el detalle del error.

No sé si hay una manera más específica de hacerlo con WebMethod , pero en ASP.NET generalmente solo establece el código de estado para su objeto Respuesta . Algo como esto:

 Response.Clear(); Response.StatusCode = 500; // or whatever code is appropriate Response.End; 

El uso de códigos de error estándar es la forma adecuada de notificar a un cliente HTTP consumidor de un error. Antes de finalizar la respuesta, también puede Response.Write() cualquier mensaje que desee enviar. Los formatos para esos son mucho menos estandarizados, por lo que puede crear el suyo propio. Pero siempre que el código de estado refleje con precisión la respuesta, su JavaScript o cualquier otro cliente que consum ese servicio entenderá el error.

Simplemente lance la excepción en su PageMethod y cójala en AjaxFailed. Algo como eso:

 function onAjaxFailed(error){ alert(error); } 

Un error se indica mediante el código de estado http (4xx – error de solicitud del usuario, 5xx – error interno del servidor) de la página de resultados. No sé asp.net, pero supongo que debes lanzar una excepción o algo así.