下面的链接下载得到:http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/webservice.htc。
实现过程
你已经了解了Web服务行为的一些基础知识,现在可以看一个示例应用程序了,它演示了在ASP.NET应用程序中如何使用Web服务行为。在这个例子中,你将建立一个简单的应用程序,它允许你从Northwind数据库检索雇员信息。示例应用程序还允许基于雇员的ID搜索雇员信息。
Employee Web服务的建立过程
在这一部分,你需要首先建立一个叫作EmployeeWebService的新Visual C# Web服务项目。项目建立之后,你需要把默认的Web服务类的名字Service1改成EmployeeService。接着你需要导入下面的名字空间以执行数据访问和处理XML数据。
using System.Data.SqlClient;
using System.Xml;
[WebMethod]
public XmlDocument GetEmpDetailsByEmpID (int employeeID)
{
string connString =
System.Configuration.ConfigurationSettings.AppSettings["connectionString"];
SqlConnection sqlConnection = new SqlConnection(connString);
try
{
DataSet employeeDataset = new DataSet("EmployeesRoot");
//把需要执行的存储过程的名字和SqlConnection 对象作为参数传递进来
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommand command = new SqlCommand("Select * from Employees Where EmployeeID ="+ 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();
}
}
}
属性WebMethod表明该方法将作为可以被调用的Web方法暴露。在项目部署的时候,ASP.NET运行时提供使用某些协议(例如XML、HTTP和SOAP)在Internet上调用这个方法所需要的所有管道信息。
[WebMethod]
上面的方法名称告诉我们,GetEmpDetailsByEmpID把employeeID作为参数并返回XmlDocument形式的雇员详细信息。
public XmlDocument GetEmpDetailsByEmpID(int employeeID)
{
string connString = System.Configuration.ConfigurationSettings.
AppSettings["connectionString"];
上面的代码行使用ConfigurationSettings类的AppSettings属性从web.config文件的<appsettings>部分检索连接字符串。在web.config文件中连接字符串是这样定义的:
<appSettings>
<add key="connectionString"
value="server=localhost;uid=sa;pwd=;database=Northwind" />
</appSettings>
下面一行代码建立了SqlConnection对象的一个实例,给它传递了用于建立数据库连接的连接字符串:
SqlConnection sqlConnection = new SqlConnection(connString);
接着你把所有的可执行代码封装在一个trycatch代码块中以处理执行后面的语句时可能发生的任何错误:
try
{
DataSet employeeDataset = new DataSet("EmployeesRoot");
SqlDataAdapter adapter = new SqlDataAdapter();
下一步,你建立了SqlCommand对象的一个实例,给它的构造函数传递你希望执行的SQL语句和前面步骤