1,在VS里面新建一个类库项目

2,向类库项目里添加WCF服务文件

3.按照WCF约束规范编写接口和实现类

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;namespace WcfDataSreve
{// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IOracleServe”。[ServiceContract][ServiceKnownType(typeof(DBNull))]public interface IOracleServe{[OperationContract]DataTable GetOrderHandleData(string orderindex);[OperationContract]DataTable GetWorkOrderData(string orderindex);[OperationContract]DataTable GetWorkOrderByDate(string starttime, string endtime);[OperationContract]string DeleteOrderHandle(string orderindex);[OperationContract]string DeleteAllOrderHandle(string orderindex);[OperationContract]string StrConn(string index);}
}

  

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;namespace WcfDataSreve
{// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“OracleServe”。
//OracleServe()中读取配置文件解析
//IIS中运行的时候以组件的形式添加至WCF服务网站中,故运行的时候读取WCF服务网站中的配置文件(Web.config)
public class OracleServe : IOracleServe {       public string ConnectionString { get; set; }       public OracleServe()       {             ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];}public DataTable GetOrderHandleData(string orderindex){using ( OracleConnection conn = new OracleConnection(ConnectionString)){conn.Open();OracleCommand cmd = new OracleCommand();cmd.CommandText = @"select * from M_ORDERHANDLE where ORDERINDEX  = '" + orderindex + "'";  cmd.Connection = conn;cmd.CommandType = CommandType.Text;OracleDataAdapter da = new OracleDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds,"OrderHandle");conn.Close();return ds.Tables["OrderHandle"];}    }public  DataTable GetWorkOrderData(string orderindex){using (OracleConnection conn = new OracleConnection(ConnectionString)){conn.Open();OracleCommand cmd = new OracleCommand();cmd.Connection = conn;cmd.CommandText = @"SELECT * FROM M_WORKORDER where ORDERINDEX  = '" + orderindex + "'";  cmd.CommandType = CommandType.Text;OracleDataAdapter da = new OracleDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds, "WorkOrder");return ds.Tables["WorkOrder"];}}public DataTable GetWorkOrderByDate(string starttime, string  endtime ){using (OracleConnection conn = new OracleConnection(ConnectionString)){conn.Open();OracleCommand cmd = new OracleCommand();cmd.Connection = conn;cmd.CommandText = @"SELECT * FROM M_WORKORDER where to_char(CREATETIME, 'yyyy-mm-dd') >= '" + Convert.ToDateTime(starttime).ToString("yyyy-MM-dd") + "' and to_char(CREATETIME, 'yyyy-mm-dd') <= '" + Convert.ToDateTime(endtime).ToString("yyyy-MM-dd") + "'";cmd.CommandType = CommandType.Text;OracleDataAdapter da = new OracleDataAdapter(cmd);DataSet ds = new DataSet();da.Fill(ds, "WorkOrder");return ds.Tables["WorkOrder"];}}public string StrConn(string index){return ConnectionString+index;}public string DeleteOrderHandle(string orderindex){using (OracleConnection conn = new OracleConnection(ConnectionString)){conn.Open();OracleCommand cmd = new OracleCommand();cmd.Connection = conn;cmd.CommandText = @"Delete  FROM M_ORDERHANDLE where HANDLELSH  = '" + orderindex + "'";  cmd.CommandType = CommandType.Text;if(cmd.ExecuteNonQuery()>0){return "OK";}else{return "No";}}}public string DeleteAllOrderHandle(string orderindex){using (OracleConnection conn = new OracleConnection(ConnectionString)){conn.Open();OracleCommand cmd = new OracleCommand();cmd.Connection = conn;cmd.CommandText = @"Delete  FROM M_ORDERHANDLE where ORDERINDEX = '" + orderindex + "'";cmd.CommandType = CommandType.Text;if (cmd.ExecuteNonQuery() > 0){return "OK";}else{return "No";}}}}
}

  

ConnectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];此句读取下面创建的WCF服务网站中web.config的节点用于获取数据库连接

4,生成解决方案

5,右击解决方案添加新建网站-》WCF服务

6,右击WCF网站添加引用

7,在弹出框中找到点击项目在右边找到刚才创建的类库组件添加(以下图片只做演示流程与实际项目不一样)

(出现类似此图则成功)

8,若果没有添加引用册出现如下图的错误

9,更改网站信息,web.config,添加数据库访问路径节点(加粗部分)(注意如果不能修改传输配额以及添加其他节点信息则可以跳过此步骤选择默认,

    此处修改传输容量和访问数据库的节点信息)

 <?xml version="1.0" ?> 
- <configuration>
- <system.web><compilation debug="true" targetFramework="4.0" /> </system.web>
- <system.serviceModel>
- <services>
- <service name="WcfDataSreve.OracleServe"><endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="LargeDataTransferServicesBinding" contract="WcfDataSreve.IOracleServe" /> </service></services>
- <bindings>
- <basicHttpBinding>
- <binding name="LargeDataTransferServicesBinding" maxReceivedMessageSize="2147483647" messageEncoding="Text" transferMode="Streamed" sendTimeout="00:10:00"><readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </binding></basicHttpBinding></bindings>
- <behaviors>
- <serviceBehaviors>
- <behavior>
- <!--  为避免泄漏元数据信息,请在部署前将以下值设置为 false --> <serviceMetadata httpGetEnabled="true" />
- <!--  要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior></serviceBehaviors></behaviors><serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel>
- <system.webServer><modules runAllManagedModulesForAllRequests="true" />
- <!--         若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。--> <directoryBrowse enabled="true" /> </system.webServer>
- <appSettings><add key="ConnectionString" value="Data Source=10.192.165.144/OSMP;User ID=cnosm;Password=osm1234$" /> </appSettings></configuration>

9.*1,修改配额的数据可以参考app.config(类库中或项目中)

9.*2,修改配额之后也需要在客户端修改传输配额(下面从别的地方选取已做参考)

<system.serviceModel><behaviors /><bindings><basicHttpBinding><binding name="BasicHttpBinding_ISqlService" receiveTimeout="00:05:00"maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" ><readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2147483647"maxBytesPerRead="4096" maxNameTableCharCount="16384" /></binding></basicHttpBinding></bindings><client><endpoint address="http://localhost:9755/Service.svc/basic"binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISqlService"contract="SQLService.ISqlService" name="BasicHttpBinding_ISqlService" /></client></system.serviceModel>

 解析

BasicHttpBinding_ISqlService这个是添加引用自动生成的
address="http://localhost:9755/Service.svc/basic 和 SQLService.ISqlService
这是二个均可以在app.config中找到,
basicHttpBinding这一个是关于绑定配额用basicHttpBinding绑定LargeDataTransferServicesBinding,LargeDataTransferServicesBinding又配置数据,注意客户端的basinHttpBinding和LargeDataTransferServicesBinding与WCF服务网站中的配置名字一样

10,更改WCF服务下的Service.svc文件,并把App_Code文件夹下的系统定义的服务删除

<%@ ServiceHost Language="C#" Debug="true" Service="WcfDataSreve.OracleServe" >

              加粗部分为类库名.服务实现类

11,当传输数据量大或是需要控制传输量时添加加粗部分代码

<?xml version="1.0"?>
<configuration><system.web><compilation debug="true" targetFramework="4.0"/></system.web><system.serviceModel><services><service name="WcfDataSreve.OracleServe"><endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="LargeDataTransferServicesBinding" contract="WcfDataSreve.IOracleServe"/></service></services><bindings><basicHttpBinding><binding name="LargeDataTransferServicesBinding" maxReceivedMessageSize="2147483647"messageEncoding="Text" transferMode="Streamed" sendTimeout="00:10:00" ><readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2147483647"maxBytesPerRead="4096" maxNameTableCharCount="16384" /></binding></basicHttpBinding></bindings><behaviors><serviceBehaviors><behavior><!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false --><serviceMetadata httpGetEnabled="true"/><!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --><serviceDebug includeExceptionDetailInFaults="false"/></behavior></serviceBehaviors></behaviors><serviceHostingEnvironment multipleSiteBindingsEnabled="true"/></system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true"/><!--若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。--><directoryBrowse enabled="true"/></system.webServer><appSettings><add key="ConnectionString" value="Data Source=10.192.165.144/OSMP;User ID=cnosm;Password=osm1234$"/></appSettings>
</configuration>

12,右击解决方案创建WPF程序引用上面的服务

在WPF项目中右击引用-》添加服务引用-》打开页面点击发现,确认即可,

引用方法是,服务引用名.服务实现类名Client new wcf=服务引用名.服务实现类名Client();即可通过对象名引用服务接口(部分代码)

 public class DataViewModel: ViewModelBase{public ObservableCollection<OrderHandle> OrderHandleList{get; set;}public WCFOracleService.OracleServeClient Wcf;public DataViewModel(){OrderHandleList = new ObservableCollection<OrderHandle>();Wcf = new WCFOracleService.OracleServeClient();DeleteSelect = new RelayCommand(ExecuteSelect, CanExecuteSelect);DeleteAll = new RelayCommand(ExecuteAllDelete, CanExecuteALl);}public void QueryOrderHandle(string orderindex){DataTable table = Wcf.GetOrderHandleData(orderindex);if(table==null){return;}for(int i=0;i<table.Rows.Count;i++){OrderHandle Oh = new OrderHandle();Oh.HandleDescrtption = table.Rows[i]["HANDLEDESCRIPTION"].ToString();Oh.HandLelsh = table.Rows[i]["HANDLELSH"].ToString();Oh.OrderIndex = table.Rows[i]["ORDERINDEX"].ToString();Oh.HandlePerson = table.Rows[i]["HANDLEPERSON"].ToString();Oh.HandLetype = table.Rows[i]["HANDLETYPE"].ToString();Oh.HandleTime =table.Rows[i]["HANDLETIME"].ToString();Oh.HandleStatus = table.Rows[i]["HANDLESTATUS"].ToString();Oh.Select = false;OrderHandleList.Add(Oh);}}

  8 发布至IIS

(1).把整个WCF服务文件拷贝至服务器中

(2)找到服务器中IIS管理器找到网站,新添加一个网站,配置基本信息,

(3)配置完成后,点击IIS右侧浏览网站-》点击Service.svc,拷贝如下地址到添加服务引用的页面即可找到,并引用

svcutil.exe http://IP地址和端口号
/Service.svc?wsdl

  

转载于:https://www.cnblogs.com/wangboke/p/5354635.html

WCF创建到使用到发布相关推荐

  1. WCF Service 的创建,测试,发布与使用示例

    WCF Service 的创建,测试,发布与使用示例 一, WCF Service 的创建: WCF Service Application 注: 为了在 IIS 或 WAS 中托管,则必须使用 WC ...

  2. WCF创建WebService正确操作步骤详解

    WCF创建WebService正确操作步骤详解 2010-02-26 09:33 佚名 CSDN 我要评论(0) 字号:T | T 我们在这里为大家介绍的WCF创建WebService的主要步骤包括有 ...

  3. 在APPLE从创建ID到申请发布AppStore账户(二)初探苹果开发者中心

    上篇说到:在APPLE从创建ID到申请发布AppStore账户(一)Apple ID注册自动登录 https://blog.csdn.net/AITop_Leader/article/details/ ...

  4. win10下 VS2019 C#创建web项目并发布部署在iis

    win10下 VS2019 C#创建web项目并发布部署在iis 安装iis: 安装完成后在浏览器输入:http://localhost/ 说明安装成功 创建web项目: 添加新窗体 编写内容 设置发 ...

  5. Vue - vue+webpack创建的项目打包发布至服务器,页面空白及背景图片不显示问题解决

    vue+webpack创建的项目打包发布至服务器,页面空白及背景图片不显示问题解决 一. 页面显示空白 二. 背景图片不显示 一. 页面显示空白 解决方法: config > index.js ...

  6. WCF创建一个控制台程序

    二.添加WCF服务.Internet Information Services(IIS) 1.进入"控制面板",打开"程序和功能",点击左上角的"启用 ...

  7. WCF 创建简单的CF程序VS2008

    为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用.本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构.对那些对WCF不是很了解的读者来说,这个例 ...

  8. 第二章 Qt Widgets项目的创建、运行和发布的过程

    2019-9-10 新建一个Qt Widgets项目的过程我就不在这里赘述了,我们这里新建一个 " helloworld " 项目,类名叫做HelloDialog,下面对各个文件进 ...

  9. 使用C#创建Windows服务 并发布Windows 服务

    一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Servic ...

最新文章

  1. java设计模式---桥接模式
  2. c语言编程 三角波,周期矩形波、周期锯齿波、周期三角波,C语言程序.doc
  3. Silverlight for Windows Phone 7开发体验
  4. 记一次性能优化,限制tcp_timewait数量,快速回收和重用
  5. CRM webClient UI搜索参数里max hit是怎么被后台服务器处理的
  6. java chsftp.get 追加_Java SFTP上传使用JSch,但如何覆盖当前文件?
  7. 【深度学习】TensorFlow之卷积神经网络
  8. 前端干货之JS最佳实践
  9. 猛料来啦!Autodesk全线产品二次开发视频录像下载!!
  10. 关于并发数与在线数的概念
  11. 东师2016年秋季计算机基础,东师2016年秋季《计算机基础》期末考核答案(1).doc
  12. c语言中{的作用,C语言中Static和Const关键字的作用
  13. 阿里云解决方案架构师,讲述分布式架构云平台解决方案(附图文)
  14. bootstrap-multiselect.js插件、chosen插件、clipboard复制插件、layer.photos、lightbox插件相册预览插件学习
  15. RINEX3文件中的toc,toe,IODE
  16. 一位技术演讲家的自白
  17. Qt 自绘控件练习 太极八卦图
  18. 基于Java的超市进销存管理系统的设计与实现
  19. maven 报错[WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 has been relocated to org.aspectj:aspectj
  20. 前端速成:双月Java之旅(week5)_day1

热门文章

  1. python线程中再起线程_多线程 - Python中的线程化
  2. java jvm调优面试题_【Java面试题第一期】有没有jvm调优经验?调优方案有哪些?...
  3. macbookpro合盖后掉电_macbookpro外接显示器,主机盖还是不盖?
  4. 国服被ban咋看_LOL国服十大神人霸哥
  5. EDAS 4.0 助力企业一站式实现微服务架构转型与 K8s 容器化升级
  6. SpringCloud 应用在 Kubernetes 上的最佳实践 — 高可用(熔断)
  7. angularjs 元素重复指定次数_5.2 设置循环次数:for +range 句式
  8. 选购商用计算机任务书,计算机网络综合实习任务书-.doc
  9. java购物菜单的选择功能_java-第四章-升级我行我素购物管理系统,实现购物菜单的选择...
  10. linux java aptget_apt-get没有安装任何linux服务器