65.9K
CodeProject 正在变化。 阅读更多。
Home

Web 服务和 Script 服务

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2013年1月4日

CPOL

1分钟阅读

viewsIcon

64242

downloadIcon

608

Web 服务和 Script 服务

大家可能都熟悉使用 C# 编写 Web 服务。Visual Studio 提供了项目模板,可以轻松地为您创建一个 Web 服务。

我相信您知道如何使用 C# 调用这个 Web 服务。但是,您知道如何使用客户端脚本(例如 JavaScript)调用 Web 服务吗? 有多种方法可以做到这一点。我将使用 jQuery$.ajax() 函数来演示。

function callSvc() {
    $.ajax({
        type: "POST",
        url: "Service1.asmx/HelloWorld",
        data: "",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data, status) { alert(data); },
        error: function(request, status, error) { alert(request); alert(status); alert(error); }
    });
} 

当您调用 HelloWorld() 服务时,默认情况下会收到“500 – 内部服务器错误”错误消息。

出现此错误是因为您尚未配置此服务以供客户端脚本访问。 当您检查 responseText 时,您会注意到它显示“只有在类定义上带有 [ScriptService] 特性的 Web 服务才能从脚本调用。

要解决此问题,您必须使用 [ScriptService] 特性配置您的 Web 服务。

[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService

[ScriptService] 特性添加到 Web 服务时,它将由 ScriptHandlerFactory 自动处理,并为 Web 服务创建一个 JavaScript 代理类。 这意味着,您可以像从代码隐藏文件调用它一样,从客户端脚本调用 Web 服务。 您可以使用以下命令查看生成的代理类

http://<URL>/SimpleWebService.asmx/js
http://<URL>/SimpleWebService.asmx/jsdebug

将生成的代理类与服务描述 (http://<URL>/Service1.asmx?WSDL) 进行比较,并告诉我您发现了什么。

© . All rights reserved.