我有一个.NET 3.5 aspx位置,其方法标有[WebMethod]
属性。我用jQuery调用它,在两个方向发送JSON。一切都很好。我的问题是,[ScriptMethod]
在应用于方法时会做什么?我试过这个,它似乎产生了相同的结果。 ScriptMethod
和WebMethod
是否相同且可互换,或者是否提供了另一个不具备的功能和/或开销?总的来说,我发现自己对可用于实现Web服务的所有选项感到困惑,我想知道每个选项的优缺点。
答案 0 :(得分:32)
您在以下两种方案中使用ScriptMethod属性。
如果您没有上述要求之一;您只需要使用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可以是一个额外的注释,如上面所述。