2009-06-02 17 views
42

Ho un posto aspx .NET 3.5 con un metodo contrassegnato con l'attributo [WebMethod]. Lo chiamo con jQuery, inviando JSON in entrambe le direzioni. Tutto funziona alla grande. La mia domanda è, cosa fa [ScriptMethod] quando applicato a un metodo? Ho provato questo e sembra dare lo stesso risultato. Sono ScriptMethod e WebMethod identici e intercambiabili oppure fornisce funzionalità e/o sovraccarico che l'altro non possiede? In generale, mi trovo confuso con tutte le opzioni disponibili per l'implementazione dei servizi web e mi piacerebbe sapere quali sono i pro ei contro.WebMethod vs ScriptMethod

+2

Ottima domanda, e benvenuti a SO! – JoshJordan

risposta

2

L'attributo ScriptMethodAttribute è facoltativo. (Tuttavia, i metodi che possono essere chiamati dallo script client devono avere l'attributo System.Web.Services .. ::. WebMethodAttribute applicato). Se un metodo non è contrassegnato con ScriptMethodAttribute, il metodo verrà chiamato utilizzando il comando HTTP POST e la risposta verrà serializzata come JSON. Non puoi ignorare questa impostazione dallo script.

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

EDIT: WebMethod e ScriptMethod non sono in competizione gli attributi. ScriptMethod potrebbe essere un'annotazione aggiuntiva, come dice il paragrafo precedente.

+0

WebMethod = chiamata con HTTP POST ... Se si aggiunge ScriptMethod cosa c'è di più? Entrambi possono essere chiamati dal client ... Non capisco. –

29

Si utilizza l'attributo ScriptMethod nei seguenti 2 scenari.

  1. Si utilizza jQuery o qualsiasi altro meccanismo richiesta AJAX, ma si desidera che la richiesta di essere un ottenere non un POST.
  2. Si desidera ricevere una risposta formattata XML in javaScript.

Se non si dispone di uno dei suddetti requisiti; hai solo bisogno di una risposta JSON usando una richiesta Ajax, quindi puoi semplicemente usare il WebMethod.

C'è ancora un altro elemento di confusione qui, quando si utilizza l'attributo ScriptService? questo viene utilizzato se si utilizza il framework di script client Ajax di Microsoft, questo attributo indica al server di generare oggetti proxy sul client in modo che sia possibile chiamare le funzioni esattamente come un oggetto normale. var MyRemoteObject = new RemoteObject();MyRemoteObject.getMessage(....) e anche quando si utilizza l'attributo ScriptService non è necessario aggiungere l'attributo ScriptMethod solo negli scenari sopra.

All'inizio mi è stato di confusione perché pensavo che gli attributi ScriptService e ScriptMethod funzionassero insieme come gli attributi WebService e WebMethod.

Problemi correlati