用IE的Web服务建立ASP.NET应用程序
【IT168 技术文档】
Employee Web服务的建立过程
在这一部分,你需要首先建立一个叫作EmployeeWebService的新Visual C# Web服务项目。项目建立之后,你需要把默认的Web服务类的名字Service1改成EmployeeService。接着你需要导入下面的名字空间以执行数据访问和处理XML数据。
employeeID.ToString(),sqlConnection);
//设置SqlCommand对象的属性
command.CommandType = CommandType.Text;
adapter.SelectCommand = command;
//使用存储过程返回的值填充数据集
adapter.Fill(employeeDataset,"Employees" );
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(employeeDataset.GetXml());
return xmlDoc;
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (sqlConnection.State == ConnectionState.Open)
{
sqlConnection.Close();
}
}
}
//设置SqlCommand对象的属性
command.CommandType = CommandType.Text;
adapter.SelectCommand = command;
//用存储过程返回的值填充数据集 adapter.Fill(employeeDataset,"Employees" );
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(employeeDataset.GetXml()); return xmlDoc; } catch (Exception ex) { throw ex; }
finally { if (sqlConnection.State == ConnectionState.Open) { sqlConnection.Close(); } } }
<div id="service" style="BEHAVIOR:url(WebService.htc)"></div>
service.useService("http://localhost/MyProjects/
WebServiceBehavior/EmployeeService.asmx?WSDL","sVCEmployee");
<%@ Page language="C#" Codebehind="EmployeeServiceClient.ASPx.cs" AutoEventWireup="false" Inherits=" EmployeeWebServiceClient.EmployeeServiceClient" %> <HTML> <HEAD> <title>Employee Details</title> <SCRIPT LANGUAGE="JScript"> //定义一个模块级的变量来捕捉事件id var iCallID ; function GetEmployeeDetails() { // 调用svcEmployee Web服务的GetEmployeeDetails方法 iCallID = service.svcEmployee.callService(DisplayResults,
"GetEmpDetailsByEmpID",txtEmployeeID.value); } function DisplayResults(result) { var strXML,objXMLNode,objXMLDoc,objEmployee,strHTML; //检查事件id是否相同 if (iCallID != result.id) return; if(result.error) { // 显示错误信息 var faultCode = result.errorDetail.code; var faultString = result.errorDetail.string; alert("ERROR: Code = " + faultCode + ", Fault String=" + faultString); } else { //把结果值赋予本地变量 objXMLNode = result.value; objXMLDoc = new ActiveXObject("Microsoft.XMLDOM"); //把返回的XML字符串载入XMLDOM对象 objXMLDoc.loadXML(objXMLNode.xml); //得到Employees节点的指针 objEmployee = objXMLDoc.selectSingleNode("GetEmpDetailsByEmpIDResult").selectSingleNode
("EmployeesRoot").selectSingleNode("Employees"); //检查从服务器返回的雇员指针是否有效 strHTML = "<font color=’#0000FF’>"; if (objEmployee != null) { //动态生成HTML,并把它添加到一个字符串变量中 strHTML += "<br><br>Employee ID :<b>" + objEmployee.selectSingleNode("EmployeeID").text + "</b><br><br>"; strHTML += "Employee First Name :<b>" + objEmployee.selectSingleNode("FirstName").text + "</b><br><br>"; strHTML += "Employee Last Name :<b>" + objEmployee.selectSingleNode("LastName").text + "</b><br><br>"; strHTML += "Employee Title :<b>" + objEmployee.selectSingleNode("Title").text + "</b><br><br>"; strHTML += "Employee Title :<b>" + objEmployee.selectSingleNode("Title").text + "</b><br><br>"; strHTML += "Title Of Courtesy:<b>" + objEmployee.selectSingleNode("TitleOfCourtesy").text + "</b><br><br>"; strHTML += "Postal Code:<b>" + objEmployee.selectSingleNode("PostalCode").text + "</b><br><br>"; } else { strHTML += "<br><br><b>Employee not found</b>"; } strHTML += "</font>" //把动态生成的HTML赋予div标记 divContents.innerHTML = strHTML; } } function init() { // 建立Web服务的实例并把它叫做svcEmployee service.useService("http://localhost/MyProjects/15Seconds/WebServiceBehavior/_ EmployeeWebService/EmployeeService.asmx?WSDL","svcEmployee"); } </SCRIPT> </HEAD> <body onload="init()"> <div id="service" style="BEHAVIOR: url(webservice.htc)"></div> <H1 align="center"> <font color="#800080">Employee Details</H1> </FONT> <br><br> <P align="left"> <font color="#800080"><b>Enter the Employee ID:</b></font> <INPUT id="txtEmployeeID" name="txtEmployeeID" style="LEFT: 149px; TOP: 72px"> <INPUT id="btnAdd" type="button" value="Get Employee
Details" name="btnGetEmployee" onclick="return GetEmployeeDetails()"> </P> <P></P> <div id="divContents"> </div> <P></P> </body> </HTML>
function GetEmployeeDetails() { // 调用svcEmployee web服务的GetEmployeeDetails方法 iCallID = service.svcEmployee.callService(DisplayResults,"GetEmpDetailsByEmpID",txtEmployeeID.value); }
function DisplayResults(result) { var strXML,objXMLNode,objXMLDoc,objEmployee,strHTML;
//检查事件是否相同 if (iCallID != result.id) return;
if(result.error) { // 读取错误信息 var faultCode = result.errorDetail.code; var faultString = result.errorDetail.string; alert("ERROR: Code = " + faultCode + ", Fault String=" + faultString); } else { //把结果值赋予本地变量 objXMLNode = result.value; objXMLDoc = new ActiveXObject("Microsoft.XMLDOM"); //把返回的XML字符串载入XMLDOM 对象 objXMLDoc.loadXML(objXMLNode.xml); //得到Employees节点的指针 objEmployee = objXMLDoc.selectSingleNode("GetEmpDetailsByEmpIDResult"). selectSingleNode("EmployeesRoot").selectSingleNode("Employees"); //查看从服务器返回的employee 指针是否有效 strHTML = "<font color=’#0000FF’>"; if (objEmployee != null) { //动态生成HTML并添加到字符串的内容中 strHTML += "<br><br>Employee ID :<b>" + objEmployee.selectSingleNode("EmployeeID").text + "</b><br><br>"; strHTML += "Employee First Name :<b>" + objEmployee.selectSingleNode("FirstName").text + "</b><br><br>"; strHTML += "Employee Last Name :<b>" + objEmployee.selectSingleNode("LastName").text + "</b><br><br>"; strHTML += "Employee Title :<b>" + objEmployee.selectSingleNode("Title").text + "</b><br><br>"; strHTML += "Employee Title :<b>" + objEmployee.selectSingleNode("Title").text + "</b><br><br>"; strHTML += "Title Of Courtesy:<b>" + objEmployee.selectSingleNode("TitleOfCourtesy").text + "</b><br><br>"; strHTML += "Postal Code:<b>" + objEmployee.selectSingleNode("PostalCode").text + "</b><br><br>"; } else { strHTML += "<br><br><b>Employee not found</b>"; } strHTML += "</font>" //把动态生成的HTML赋予div标记 divContents.innerHTML = strHTML; } }
<div id="service" style="BEHAVIOR: url(webservice.htc)" onresult="DisplayResults()"></div>
function DisplayResults() { //检查事件id是否相同 if (iCallID != event.result.id) return; if(event.result.error) { var faultCode = event.result.errorDetail.code; var faultString = event.result.errorDetail.string; alert("ERROR: Code = " + faultCode + ", Fault String=" + faultString); } else { //显示结果值 alert(event.result.value); } }