WebMethod vs ScriptMethod

44 asp.net web-services pagemethods

我有一个.NET 3.5 aspx的地方,其方法标有该[WebMethod]属性.我用jQuery调用它,在两个方向发送JSON.一切都很好.我的问题是,[ScriptMethod]应用于方法时会怎么做?我试过这个,它似乎产生了相同的结果.是ScriptMethodWebMethod相同的,可互换的,还是一个提供功能和/或开销,其他不?总的来说,我发现自己与实现Web服务的所有选项相混淆,我想知道每个选项的优缺点.

Shr*_*itz 34

您在以下两个方案中使用ScriptMethod属性.

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

如果您没有上述要求之一; 您只需要使用ajax请求进行JSON响应,然后您就可以使用WebMethod.

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

在开始时我很困惑,因为我认为ScriptService和ScriptMethod属性就像WebService和WebMethod属性一样工作.


sha*_*esh 2

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

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

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