services net asp asp.net web-services pagemethods

asp.net - services - asp net webmethod ajax



WebMethod versus ScriptMethod (2)

El atributo ScriptMethodAttribute es opcional. (Sin embargo, los métodos que se pueden invocar desde el script del cliente deben tener aplicado el atributo System.Web.Services .. :: .WebMethodAttribute). Si un método no está marcado con ScriptMethodAttribute, se llamará al método utilizando el comando HTTP POST y la respuesta se serializará como JSON. No puede anular esta configuración desde el script.

desde - http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.aspx

EDITAR: WebMethod y ScriptMethod no son atributos competitivos. ScriptMethod podría ser una anotación adicional, como dice el párrafo anterior.

Tengo un .NET 3.5 aspx lugar con un método marcado con el atributo [WebMethod] . Estoy llamando a esto con jQuery, enviando JSON en ambas direcciones. Todo esto funciona genial Mi pregunta es, ¿qué hace [ScriptMethod] cuando se aplica a un método? Intenté esto y parece dar el mismo resultado. ¿Son ScriptMethod y WebMethod idénticos e intercambiables, o uno proporciona funcionalidad y / o sobrecarga que el otro no? En general, me encuentro confundido con todas las opciones disponibles para implementar servicios web y me gustaría saber cuáles son los pros y los contras de cada uno.


Utiliza el atributo ScriptMethod en los siguientes 2 escenarios.

  1. Está utilizando jquery o cualquier otro mecanismo de solicitud de Ajax, pero desea que la solicitud sea un GET y no un POST.
  2. Desea recibir una respuesta formateada XML en javaScript.

Si no tiene uno de los requisitos anteriores; solo necesita una respuesta JSON utilizando una solicitud ajax, entonces simplemente puede usar el método WebMethod.

Todavía hay un elemento más confuso aquí, ¿cuándo se usa el atributo ScriptService? esto se usa si está utilizando el marco de comandos de Microsoft Ajax Client, estos atributos le dicen al servidor que genere objetos proxy en el cliente para que pueda llamar funciones como un objeto normal. var MyRemoteObject = new RemoteObject(); MyRemoteObject.getMessage(....) e incluso cuando utiliza el atributo ScriptService no necesita agregar el atributo ScriptMethod solo en los escenarios anteriores.

Al principio, me resultó confuso porque pensé que los atributos ScriptService y ScriptMethod funcionan de manera conjunta, al igual que los atributos WebService y WebMethod.