WCF服务配置步骤
1、 创建项目:
2、 删除Service.svc和Service.cs
3、右击解决方案→添加新建项→类库
4、 重复第3步添加一个BLL类库
5、在DAL类库中重命名Class1.cs为DalPublic.cs,复制如下代码到DalPublic.cs。
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
public class DalPublic
{
private string StrConnect = @"";//链接字符串
private SqlCommand _sqlCmd;
private SqlDataAdapter _sqlDa;
private DataTable _dt;
private SqlConnection _sqlCn;
private SqlDataReader _sqlRd;
#region 新增,修改,删除的公共方法
public int UpdateData(string sql, SqlParameter[] param)
{
int count = 0;
using (_sqlCn = new SqlConnection(StrConnect))
{
_sqlCn.Open();
_sqlCmd = new SqlCommand(sql, _sqlCn) {CommandType = CommandType.StoredProcedure};
_sqlCmd.Parameters.AddRange(param);
count = _sqlCmd.ExecuteNonQuery();
_sqlCn.Close();
}
return count;
}
#endregion
#region 查询 的公共方法
public DataTable QueryTable(string sql, SqlParameter[] param)
{
_dt = new DataTable();
using (_sqlCn = new SqlConnection(StrConnect))
{
_sqlCn.Open();
_sqlDa = new SqlDataAdapter(sql, _sqlCn) {SelectCommand = {CommandType = CommandType.StoredProcedure}};
_sqlDa.SelectCommand.Parameters.AddRange(param);
_sqlDa.Fill(_dt);
_sqlCn.Close();
}
return _dt;
}
#endregion
#region 操作文件的公共方法
public byte[] QueryBytes(string sql, SqlParameter[] param)
{
using (_sqlCn = new SqlConnection(StrConnect))
{
_sqlCn.Open();
_sqlRd = null;
_sqlCmd = new SqlCommand(sql, _sqlCn) {CommandType = CommandType.StoredProcedure};
_sqlCmd.Parameters.AddRange(param);
_sqlRd = _sqlCmd.ExecuteReader();
byte[] file = null;
if (_sqlRd.Read())
{
file = (byte[]) _sqlRd[0];
}
_sqlRd.Close();
_sqlCn.Close();
return file;
}
}
#endregion
}
}
6、右击DAL类库→属性→设置
7、创建链接字符串:
8、选择数据库的实例→选择登陆方式→选择要链接的数据库→测试链接:
9、全选链接字符串并复制:
10、粘贴到StrConnect字段
11、DAL配置完成!
12、在BLL中引用DAL,在启动项中引用BLL:
BLL引用DAL例子如下:
13、在BLL中添加System.ServiceMode程序集引用
14、配置BLL,添加一个方法为例子如下:
解析:因为WCF中不能传输复杂数据类型,只能传输一维数据类型,而Table是二维数据类,所以要将DataTable添加到DataSet数据集进行传输(一维数据类型),DataSet可以同时放入多张表进行传输。
代码如下:
using System.Data;
using System.Data.SqlClient;
using System.ServiceModel; //应用系统程序集
using DAL; //引用DAL命名空间
namespace BLL
{
[ServiceContract] //服务契约
public class FrmYiYaoGuanLi
{
private readonly DalPublic _dal = new DalPublic(); //创建DAL命名空间中的DalPublic类的对象
private readonly DataSet _ds = new DataSet(); //实例化DataSet
[OperationContract] //行为契约
public DataSet GetAllYaoPinXinXi()
{
SqlParameter[] sql =
{
new SqlParameter("@type", SqlDbType.Char)
};
sql[0].Value = "GetAllYaoPinXinXi"; //创建链接参数数组
_ds.Reset(); //清空原来的DataSet实例
_ds.Tables.Add(_dal.QueryTable("YiYaoGuanLi", sql)); //调用DalPublic类中的QueryTable方法查询数据,并将返回的数据添加到DataSet中
return _ds; //返回DataSet给客户端
}
}
}
15、保存后重新生成解决方案:
16、右击Web.confg文件→编辑WCF配置
17、新建服务:
18、添加服务
19、一直下一步到如下,清空终结点的网址前缀:
20、配置终结点:
21、在高级→服务行为→空名称改名为BLL。没有服务行为的要手动添加:serviceDebug,serviceMetadata.(这个服务的行为是服务端的所有服务的行为)
22、双击serviceDebug配置serviceDebug如下:
23、双击serviceMetadata配置如下
24、在服务添加服务行为:BLL(此BLL为服务行为中的BLL)
25、配置宿主环境:
26、粘贴到如下输入框,第一个要加.svc后缀
27、Ctrl+S保存后关闭,打开web.config复制圈中的内容,然后运行
28、加斜线粘贴按回车键;
29、WCF服务端应用程序配置成功,效果如下: