当前位置: 代码迷 >> .NET新技术 >> 初学WCF.SL调用WCF有关问题.大牛们看看
  详细解决方案

初学WCF.SL调用WCF有关问题.大牛们看看

热度:450   发布时间:2016-04-25 01:57:32.0
初学WCF..SL调用WCF问题..大牛们看看
C# code
 public interface ICalculator//定义接口    {             [OperationContract]      bool InsertOrUpdateOrDeleteData(string cmdText);                    [OperationContract]      ObservableCollection<Student> SelectDate(string cmdText);            }public class CalculatorService : ICalculator //实现接口    {             public bool InsertOrUpdateOrDeleteData(string cmdText)        {           return  DBhelper.GetExcuteNonQuery(cmdText);        }        public ObservableCollection<Student> SelectDate(string cmdText)        {            DataSet ds = new DataSet();            ds=DBhelper.GetData(cmdText);            ObservableCollection<Student> obj = new ObservableCollection<Student>();            DataTable dt = new DataTable();            dt = ds.Tables[0];            for (int i = 0; i < dt.Rows.Count; i++)            {                obj.Add(new Student() { Stu_id = (string)dt.Rows[i][0], Stu_Name = (string)dt.Rows[i][1], Stu_Age = (int)dt.Rows[i][2], Stu_Adress = (string)dt.Rows[i][3], Stu_Sex = (bool)dt.Rows[i][4], Stu_Info = (string)dt.Rows[i][5] });            }            return obj;                   }    } //实现对定义在Services项目中的服务的寄宿            using (ServiceHost Host = new ServiceHost(typeof(CalculatorService)))            {                //终结点                Host.AddServiceEndpoint(typeof(ICalculator), new BasicHttpBinding(), "http://127.0.0.1:8080/CalculatorService");                if (Host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)                {                    ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();                    behavior.HttpGetEnabled = true;                    behavior.HttpGetUrl = new Uri("http://127.0.0.1:8080/CalculatorService/metadata");                    Host.Description.Behaviors.Add(behavior);                }                Host.Opened += delegate                {                    Console.WriteLine("输入off关闭服务");                    string str = Console.ReadLine();                    if (str == "off")                    {                        Host.Close();                    }                };                Host.Open();                Console.ReadLine();            }public  class DBhelper : IDisposable    {        private static string connctionString = "User=sa;Password=123456;Database=test; Server=.";        private static SqlConnection conn;        private static SqlCommand cmd;        private static SqlDataAdapter  dr;        /// <summary>        /// 得到连接对象        /// </summary>        public static SqlConnection Connection        {            get            {                conn = new SqlConnection(connctionString);                conn.Open();                return conn;            }        }        /// <summary>        /// 关闭连接时,释放资源        /// </summary>        public void Dispose()        {            conn.Dispose();            cmd.Dispose();        }        /// <summary>        /// 关闭操作数据库的对象        /// </summary>        public void Closed()        {            cmd.Cancel();                       if (conn.State == ConnectionState.Closed)             {                conn.Close();            }        }        /// <summary>        /// 创建参数        /// </summary>        /// <param name="ParaName"></param>        /// <param name="type"></param>        /// <param name="value"></param>        /// <returns></returns>        public static SqlParameter CreateParameter(string ParaName, SqlDbType type, object value)         {            SqlParameter Para = new SqlParameter(ParaName, type);            Para.Value=value ;            return Para ;        }        /// <summary>        /// 增删改        /// </summary>        /// <param name="cmdText"></param>        /// <returns></returns>        public static bool GetExcuteNonQuery(string cmdText)         {            using (cmd = new SqlCommand(cmdText,Connection))            {                if (cmd.ExecuteNonQuery() > 0)                 {                    return true;                }else                {                    return false ;                }            }        }        /// <summary>        /// 查询返回数据        /// </summary>        /// <param name="cmdText"></param>        /// <returns></returns>        public static  DataSet GetData(string cmdText)         {            DataSet ds = new DataSet();            using (dr = new SqlDataAdapter(cmdText,Connection))             {                dr.Fill(ds);                return ds;            }        }//在SL类库项目中调用CalculatorServiceClient calient = new CalculatorServiceClient("http://127.0.0.1:8080/CalculatorService");            calient.SelectDateCompleted += new EventHandler<SelectDateCompletedEventArgs>(calient_SelectDateCompleted);CalculatorServiceClient("http://127.0.0.1:8080/CalculatorService"); //实例化时报错,关键字不在字典中//在控制台程序中调用 class Program    {        static void Main(string[] args)        {            CalculatorServiceClient cl = new CalculatorServiceClient();          Student[] obj= cl.SelectDate("select * from students");          foreach (var item in obj)          {              Console.WriteLine(((Student)item).Stu_Name);          }          Console.ReadLine();        }    }//可以正常输出//网上的资料都说 要创建SL wcf工程...大牛们..在SL中怎么调用这个WCF服务呢//引用WCF生成的CONFIG,我看是对的啊...<configuration>    <system.serviceModel>        <bindings>            <basicHttpBinding>                <binding name="BasicHttpBinding_CalculatorService" maxBufferSize="2147483647"                    maxReceivedMessageSize="2147483647">                    <security mode="None" />                </binding>            </basicHttpBinding>        </bindings>        <client>            <endpoint address="http://127.0.0.1:8080/CalculatorService" binding="basicHttpBinding"                bindingConfiguration="BasicHttpBinding_CalculatorService"                contract="ServiceReference1.CalculatorService" name="BasicHttpBinding_CalculatorService" />        </client>    </system.serviceModel></configuration>
  相关解决方案