WebMethod vs ScriptMethod

时间:2009-06-02 19:36:19

标签: asp.net web-services pagemethods

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

2 个答案:

答案 0 :(得分:32)

您在以下两种方案中使用ScriptMethod属性。

  1. 您正在使用jquery或任何其他ajax请求机制,但您希望请求是GET而不是POST。
  2. 您希望在javaScript中收到XML格式的响应。
  3. 如果您没有上述要求之一;您只需要使用ajax请求进行JSON响应,然后就可以使用WebMethod。

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

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

答案 1 :(得分: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可以是一个额外的注释,如上面所述。