Web 服务和 Script 服务





5.00/5 (1投票)
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) 进行比较,并告诉我您发现了什么。