WebMethod vs ScriptMethod

我有一个.NET 3.5 aspx的地方,用[WebMethod]属性标记的方法。 我用jQuery调用这个,发送双向的JSON。 这一切都很好。 我的问题是, [ScriptMethod]在应用于某个方法时做了什么? 我已经试过这个,它似乎产生相同的结果。 ScriptMethodWebMethod相同和可互换的,还是提供其他function和/或开销? 总的来说,我发现自己对实现Web服务的所有可用选项感到困惑,我想知道每个选项的优缺点。

在以下两种情况下使用ScriptMethod属性。

  1. 您正在使用jquery或任何其他ajax请求机制,但您希望请求是GET而不是POST。
  2. 您想要在javaScript中接收XML格式的响应。

如果你没有上述要求之一, 你只需要使用ajax请求的JSON响应,那么你可以简单地使用WebMethod。

这里还有一个令人困惑的元素,你什么时候使用ScriptService属性? 如果您使用的是Microsoft Ajax Client脚本框架,则使用此属性,此属性会指示服务器在客户端上生成代理对象,以便可以像调用普通对象一样调用函数。 var MyRemoteObject = new RemoteObject(); MyRemoteObject.getMessage(....) ,甚至在使用ScriptService属性时,只需在上述scheme中添加ScriptMethod属性即可。

开始时我感到困惑,因为我认为ScriptService和ScriptMethod属性一起工作,就像WebService和WebMethod属性一样。

ScriptMethodAttribute属性是可选的。 (但是,可以从客户端脚本调用的方法必须应用System.Web.Services .. ::。WebMethodAttribute属性。 如果一个方法没有用ScriptMethodAttribute标记,那么将使用HTTP POST命令调用该方法,并将响应序列化为JSON。 您无法从脚本覆盖此设置。

from – http://msdn.microsoft.com/zh-CN/library/system.web.script.services.scriptmethodattribute.aspx

编辑:WebMethod和ScriptMethod不是竞争属性。 如上面的段落所述,ScriptMethod可以是一个额外的注释。