WCF学习之旅—WCF服务部署到IIS7.5(九)

四、WCF服务部署到IIS7.5

我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以依靠IIS来管理宿主进程的生命周期。在开发和使用的过程与Web Service非常相似。

1) 为WCF服务创建.svc文件

对于ASP.NET Web Service的每个服务都具有一个.asmx文件,客户端通过访问.asmx文件实现对相应Web Service的调用。WCF服务与Web Service类似,每个WCF服务也具有一个对应的文 件,其文件扩展名为.svc。基于IIS的服务寄宿要求相应的WCF服务具有相应的.svc文件,.svc文件部署于IIS站点中,对WCF服务的调用体现在对.svc文件的访问上。

.svc文件的内容很简单,仅仅包含一个ServiceHost指令(Directive),该指令具有一个必须的Service属性和一些可选的 属性。所以最简单的.svc仅仅具有一个包含Service属性(该属性指明了相应的WCF服务的有效类型)的ServiceHost指令。 BookService对应的.svc如下所示,我们把该.svc放在Services项目的根目录下,并将文件命名为 BookService.svc。

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLib.BookService" %>

2) 为WCF创建web.config文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <directoryBrowse enabled="true" />
    </system.webServer>
         <system.serviceModel>
    <services>
      <service name="WcfServiceLib.BookService">
        <endpoint address="" binding="basicHttpBinding" contract="WcfServiceLib.IBookService">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- 为避免泄漏元数据信息,

          请在部署前将以下值设置为 false -->
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />

          <!-- 要接收故障异常详细信息以进行调试,

          请将以下值设置为 true。在部署前设置为 false

          以避免泄漏异常信息 -->
          <serviceDebug includeExceptionDetailInFaults="False" />

        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
    <system.web>
        <compilation defaultLanguage="c#" />
    </system.web>
</configuration>

3) 将上述文件和程序集放到相应目录下

创建一个文件夹,将上述文件和程序集放到想应目录下。这里,创建文件夹‘WCF’,将文件‘BookService.svc’,‘Web.config’放入。

因为一个Web应用在运行的时候会默认从位于根目录下的Bin目录加载程序集,所以,程序集‘WcfServiceLib.dll’放入子目录‘bin‘下,如下图。

4) 为WCF服务创建WebSite

  1. 在IIS 7.5中,在”Default Web Site”上右键弹出快捷菜单,点击“添加应用程序…”。

2. 在“添加应用程序”对话框中,分别在“别名”、“物理路径”文本框中输入内容,同时点击“选择”按钮,在弹出的“选择应用程序池”中选择“ASP.NET v4.0 Classic”。

3. 创建完成之后的结果,如下图。

4. 浏览BookService.svc页面。如下图。

5. 最后结果,如下图。

 5) 寄宿过程中的错误解决方法

1. HTTP 错误 404.3 - Not Found由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。如下图。

解决方案:

方法如下:控制面板—>所有面板项—>程序和功能—>打开或关闭Windows功能—>

          2.  未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型 “System.ServiceModel.Activation.HttpModule”

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息:
System.TypeLoadException:
未能从程序集“System.ServiceModel,
Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型
“System.ServiceModel.Activation.HttpModule”。

如下图。

解决方案:

在CMD命令窗口中执行以下指令。 aspnet_regiis.exe -i。如下图。

       3. 它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。

解决方案:

打开.svc文件,你会看到<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLib.BookService" %> 注意红色字体要与WCF提供的类一致。

时间: 2024-10-08 10:13:21

WCF学习之旅—WCF服务部署到IIS7.5(九)的相关文章

WCF学习之旅—WCF概述(四)

一.WCF概述 1) 什么是WCF? Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点.服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务.终结点可以是从服务终结点请求数据的服务客户端.简单消息可以是作为 XML 发送的单个字符或单个单词,复杂消息可以是二进制数据流.一些示例方案包括: 处理企业事务的安全服务. 将当前数据

WCF学习之旅—WCF服务部署到应用程序(十)

五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下图. (2)添加 System.ServiceModel.dll 的引用. (3)添加 WCF 服务类库(WcfServiceLib)的项目引用. (4)创建宿主程序,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.Serv

WCF学习之旅—WCF服务配置(十四)

一.概述 我们在前面章节中讲了寄宿,在前面的实例中也用到了配置文件,这一篇主要讲讲如何在应用配置文件,提高WCF程序的灵活性.在编写WCF服务应用程序时,编写配置项也是其中一项主要工作,在前面的几个示例中我也使用过配置文件,通过配置文件来简化代码.WCF通过公开终结点,向客户端公开服务,包括服务的地址.服务用于发送和接收消息的传输和消息编码,以及服务需要的安全类型等.当我们把这些配置项写入到配置文件后,我们无需编译即可修改WCF的一些可变信息,提高了程序的灵活性. 注意: 1)在代码里写了配置,

WCF学习之旅—WCF寄宿前的准备(八)

一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有"WCF 服务应用程序"和"WCF服务库". WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类协定的定义,可以直接看到运行的效果. WCF服务库,可以认为是一个包含WCF服务以及协定定义的类库.不能直接运行,你可以在其他项目里引用,在宿主里启用托管这个库,有点类似于我们在Web/windows项目中应用的类库.考虑WCF服务设计的时候,服务类的定义为单独的库,可以为其它

WCF学习之旅—WCF第二个示例(五)

二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对应的文本框中输入“SCF.WcfService”,然后点击“确定”按钮.如下图. 第二步 , 安装Entity Framework 1)  使用NuGet下载最新版的Entity Framework 6.1.3.在解决方案资源管理器中——>在项目SCF.WcfService上鼠标右键单击——>弹出

WCF学习之旅—基于ServiceDebug的异常处理(十七)

WCF学习之旅—WCF中传统的异常处理(十六) 二.基于ServiceDebug的异常处理 从前面的示例中,可以看到客户端捕获了异常,这是我们处理异常的前提.为了有利于我们进行有效的调试,WCF提供了ServiceDebug Service Behavior.我们可以通过设置<serviceDebug includeExceptionDetailInFaults="True" />属性设为true,那么如果服务端抛出异常,WCF会简单得包装这个异常并把它置于Soap中Res

WCF学习之旅—实现支持REST客户端应用(二十四)

WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持REST的WCF服务端程序,本文介绍如何调用上一篇文章介绍的RestFul服务端. 五.Windows客户端调用 为了强调REST的通用性,客户端不用WCF的形式调用服务,而是采用HttpWebResponse通过编程方式直接访问,消息格式我们选XML. 首先,我们使用C#来封装一个RestHelper类

WCF服务部署到IIS7.5

下面介绍如何把WCF服务部署到IIS: 为WCF服务创建.svc文件 我们知道,每一个ASP.NET Web服务都具有一个.asmx文本文件,客户端通过访问.asmx文件实现对相应Web服务的调用.与之类似,每个WCF服务也具有一个对应的文本文 件,其文件扩展名为.svc.基于IIS的服务寄宿要求相应的WCF服务具有相应的.svc文件,.svc文件部署于IIS站点中,对WCF服务的调用体 现在对.svc文件的访问上. .svc文件的内容很简单,仅仅包含一个ServiceHost指令(Direct

WCF学习之旅—第三个示例(二十七)

一.前言 通过前面二十几个章节的学习,我们知道了什么是WCF:WCF中的A.B.C:WCF的传输模式:WCF的寄宿方式:WCF的异常处理.本文综合应用以上知识点,一步一步写一个小的WCF应用程序——书籍管理系统(BookMgr). 这个示例就是一个非常简单的书籍管理系统,功能有:查询.修改.新增.删除(不包括安全.优化等相关问题).异常处理.WCF的增删改查和WinForm相差无几.WCF只是把具体“实现”写在“服务端”,而“调用”放在了“客户端”. 二.BookMgr说明 1)Demo的 “服