WCF服务配置步骤

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服务端应用程序配置成功,效果如下:


初学者的分享,仅供学习,禁止用于商业用途!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值