Подтвердить что ты не робот

WebMethod vs ScriptMethod

У меня есть место aspx.NET 3.5 с методом, помеченным атрибутом [WebMethod]. Я называю это с помощью jQuery, отправляя JSON в обоих направлениях. Все это прекрасно работает. Мой вопрос: что делает [ScriptMethod] при применении к методу? Я пробовал это и, похоже, дал тот же результат. Являются ли ScriptMethod и WebMethod идентичными и взаимозаменяемыми или же предоставляют функциональность и/или служебные данные, которые нет у другого? В общем, я нахожу себя в замешательстве со всеми вариантами, доступными для внедрения веб-сервисов, и я хотел бы знать, что за плюсы и минусы для каждого.

4b9b3361

Ответ 1

Вы используете атрибут ScriptMethod в следующих двух сценариях.

  • Вы используете jquery или любой другой механизм запроса ajax, но вы хотите, чтобы запрос был GET, а не POST.
  • Вы хотите получить обработанный XML-ответ в javaScript.

Если у вас нет одного из вышеуказанных требований; вам просто нужен ответ JSON с использованием запроса ajax, тогда вы можете просто использовать WebMethod.

Здесь есть еще один запутывающий элемент, когда вы используете атрибут ScriptService? это используется, если вы используете инфраструктуру Microsoft Ajax Client script, эти атрибуты говорят серверу генерировать прокси-объекты на клиенте, чтобы вы могли вызывать функции точно так же, как обычный объект. var MyRemoteObject = new RemoteObject(); MyRemoteObject.getMessage(....), и даже если вы используете атрибут ScriptService, вам не нужно добавлять атрибут ScriptMethod только в вышеуказанные сценарии.

Это меня сбивало с толку в начале, потому что я думал, что атрибуты ScriptService и ScriptMethod работают вместе так же, как и атрибуты WebService и WebMethod.

Ответ 2

Атрибут ScriptMethodAttribute не является обязательным. (Тем не менее, методы, которые могут быть вызваны из клиента script, должны иметь атрибут System.Web.Services..::. WebMethodAttribute.). Если метод не отмечен ScriptMethodAttribute, метод будет вызван с помощью команды HTTP POST, и ответ будет сериализован как JSON. Вы не можете переопределить этот параметр из script.

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

EDIT: WebMethod и ScriptMethod не являются конкурирующими атрибутами. ScriptMethod может быть дополнительной аннотацией, как указано выше в параграфе.