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


    上一篇中,我们创建了一个简单的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》
    运行完全没问题。

  • 相关阅读:
    一起学Windows Phone7开发(十三.六 Web控件)
    一起学Windows Phone7开发(十三.四 基本控件)
    一起学Windows Phone7开发(十三.一 容器控件)
    一起学Windows Phone7开发(十三.八 ListBox控件)
    一起学Windows Phone7开发(十三.九 UserControl控件)
    一起学Windows Phone7开发(十三.七 绘图控件)
    转载:MTU值的设置
    Uri(uniform resource identifiers)的用法
    用MeasureOverride和ArrangeOverride实现元素定位
    WPF窗体的关闭
  • 原文地址:https://www.cnblogs.com/stragon/p/2239414.html
Copyright © 2020-2023  润新知