45

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

4

2 回答 2

35

您在以下 2 个场景中使用 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 属性一样一起工作。

于 2010-02-11T18:55:51.073 回答
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 可能是一个附加注释,正如上面的段落所说。

于 2009-06-02T19:46:44.963 回答