WCF开发实战系列二:使用IIS发布WCF服务

来源:互联网 发布:网络安全员证书怎么考 编辑:程序博客网 时间:2024/05/17 09:37

http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811141.html

上一篇中,我们创建了一个简单的WCF服务,在测试的时候,我们使用VS2008自带的WCFSVCHost(WCF服务主机)发布WCF服务,以便进行测试。这种VS2008内置的WCFSVCHost只适用于开发人员测试的使用,能进行WCF服务部署。这一篇文章中我们来看一下如何在IIS中部发布我们上一篇中做好的WCF服务。

第一步:打开我们上一篇文章中建立的WCF服务项目。

clip_image002
图《1》

第二步:新建WCF服务站点。在解决方案上右击,选择“添加”->“新建网站”,打开新建网站对话框。在“添加新网站”对话框中,我们选择“WCF服务”,并把网站的名子命名为“BookServiceHost”

clip_image004
图《2》
建立起来的新的WCF服务站点的结果如下,其中在App_Code文件中自动为我们生成两个类文件:IService.cs和Service.cs。这两个文件对我们来说没有用,我们删掉。

clip_image006
图《3》

第三步:在刚刚创建的WCF服务站点上添加对WCF服务库项目--Services项目的引用。

clip_image008
图《4》

第四步:配置Service.svc文件。
双击Service.svc文件,我们可以看到它的声明指示如下:
<%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>
由于在第二步中我们已经把IService.cs和Service.cs两个文件已经删除了,所以这里的声明指示内容修改一下,让这个Service.svc文件的后台代码指向我们上次创建的WCF服务库项目--Services项目中的类,改后的代码如下:
<%@ ServiceHost Language="C#" Debug="true" Service="Services.BookService"%>
我们把其中的Service属性指定为Services命名空间下的BookService类,并把CodeBehind属性删去了。

第五步:配置此WCF服务站点与WCF服务库项目之间的类的对应。
虽然在第三步中我们添加了对Services项目的引用,并且在第四步中修改了Service.svc的类的对应,但此时我们的WCF服务站点并不能把WCF服务库中的服务和终结点发布出来,还需要我们对web.config进行一系列的配置工作。
在web.config上右击选择“编辑WCF配置”

clip_image010
《图5》
在弹出的服务配置窗口中,把Service服务指定到WCF服务库的Services.dll中的Services.BookService服务类上。

clip_image011
《图6》
再把其中的一个对外终结点的Contract设为WCF服务库的Services.dll中的Services.IBookService服务契约上。

clip_image012
《图7》

第六步:试着再添加一个通信的终结点。
这一步是可选的,我们再为此WCF服务站点添加一个终结点,A=basic B=basicHttpBinding C=Services.IBookService

clip_image013
《图8》
下面我们将试着使用不同的终结点与WCF服务进行交互,查看运行情况。
当我们使用IIS5或IIS6发布WCF服务的时候一般只创建Http绑定的终结点,而不能创建使用TCP绑定、管道绑定的终结点。

第七步:测试运行WCF服务站点。
在Service.svc上右击,选择“在浏览器中查看”,在IE中运行此服务。

clip_image014
《图9》
由此我们看到我们可以在ASP.NET Development Server中发布我们的WCF服务了。

第八步:在IIS布署此WCF服务站点。
在IIS建立Web应用程,指向我们的WCF服务站点所在的目录。然后在IIS运行我们发布的WCF服务

clip_image015
《图10》
从上图中我们看到发布的站点中不再包含有端口号。
到此为至我们在IIS中发布WCF服务成功。

下面我们在WCF测试客户端调用我们刚刚在IIS中发布的WCF服务
第九点:在VS2008命令窗口中输入以下代码运行WCF测试客户端
x:\...\wcftestclient http://localhost/TestWCFService/Service.svc
弹出测试窗口如下:

clip_image016
《图11》
我们可以看到发布的服务中有两个终结点:这两个终结点的传输方式不同,但提供的方法是相同的。
我们通过第一个终结点的AddBooks()方法添加三个对象。

clip_image017
《图12》
再通过第二个终结点的GetAllBooks()方法取得所有对象的信息。

clip_image018
《图13》
运行完全没问题。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机充电那坏了怎么办 孩子在学校被老师冤枉怎么办 初中学校不好我该怎么办 天气太热屁股淹了怎么办 骑车骑的屁股疼怎么办 爬山时屁股摔紫青了怎么办 宝宝不肯脱裤子拉粑粑怎么办 国家对无地农民怎么办 生完孩子骨架变大怎么办 17岁长高很慢怎么办? 出月子腿着凉了怎么办 脚着凉了脚疼怎么办 腿着凉了特别疼怎么办 孩子骨龄大2两年怎么办 和人吃饭很尴尬怎么办 头不自觉向右偏怎么办 靠墙站立腰疼怎么办 小腿酸痛乏力肌肉萎缩怎么办 搬重物后手臂疼怎么办 和尚鹦鹉吃了盐怎么办 刚买鹦鹉不上手怎么办 word的文件时间改了怎么办 图强gps编码丢失怎么办 武统台湾后岛民怎么办 没有你我怎么办是什么歌 ios 12软件闪退怎么办 来大姨妈想吐怎么办 3岁宝宝体重轻怎么办 硕士延期毕业考上博士怎么办 中国人移民欧洲饮食不习惯怎么办 出车祸了报警警察不管怎么办 高中的孩子不好好上学怎么办 和老公消费观念不合拍怎么办 去医院没带现金怎么办 微信读书下架了怎么办 24岁血压有点高怎么办 吃鸡鼠标弹出来怎么办 电脑分辨率调错了怎么办 猎豹sc9打不开门怎么办 苹果手机卡顿反应慢怎么办 金立手机卡顿反应慢怎么办