WebMethod 与 ScriptMethod

发布于 2024-07-23 05:11:54 字数 309 浏览 6 评论 0原文

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

I have a .NET 3.5 aspx place with a method marked with the [WebMethod] attribute. I'm calling this with jQuery, sending JSON in both directions. This all works great. My question is, what does [ScriptMethod] do when applied to an method? I've tried this and it seems to yield the same result. Are ScriptMethod and WebMethod identical and interchangeable, or does one provide functionality and/or overhead that the other doesn't? In general, I find myself confused with all of the options available for implementing web services and I'd like to know what the pros and cons are for each.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那些过往 2024-07-30 05:11:54

您可以在以下 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 属性一样。

You use the ScriptMethod attribute in the following 2 scenarios.

  1. You are using jquery or any other ajax request mechanism, but you want the request to be a GET not a POST.
  2. You want to receive an XML formated response in javaScript.

If you don't have one of the above requirements; you just need a JSON response using a an ajax request then you can simply use the WebMethod.

There is still one more confusing element here, when do you use the ScriptService attribute? this is used if you are using the Microsoft Ajax Client script framework, this attributes tell the server to generate proxy objects on the client so that you can call functions just like a normal object. var MyRemoteObject = new RemoteObject(); MyRemoteObject.getMessage(....) and even when you use the ScriptService attribute you don't need to add the ScriptMethod attribute only in the above scenarios.

It was confusing to me at the begining because i thought that the ScriptService and the ScriptMethod attributes works together just like the WebService and WebMethod attributes.

无力看清 2024-07-30 05:11:54

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 可以是一个附加注释,如上面的段落所述。

The ScriptMethodAttribute attribute is optional. (However, methods that can be called from client script must have the System.Web.Services..::.WebMethodAttribute attribute applied.). If a method is not marked with ScriptMethodAttribute, the method will be called by using the HTTP POST command and the response will be serialized as JSON. You cannot override this setting from script.

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

EDIT: WebMethod and ScriptMethod are not competing attributes. ScriptMethod could be an additional annotation, as the above para says.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文