本主题概述了创建 Internet 信息服务 (IIS) 中承载的 Windows Communication Foundation (WCF) 服务所需的基本步骤。 本主题假设您熟悉 IIS 且了解如何使用 IIS 管理工具创建和管理 IIS 应用程序。 有关以下内容的详细信息请参阅 IIS Internet Information Services AWCF在 IIS 环境中运行的服务充分利用 IIS 功能,如进程回收、 空闲关闭、 进程状况监视和基于消息的激活。 此宿主选项要求正确配置 IIS,但不需要编写任何承载代码作为应用程序的一部分。 只可以将 IIS 宿主与 HTTP 传输协议一起使用。

有关以下内容的详细信息如何WCF和ASP.NET进行交互,请参阅WCF 服务和 ASP.NET。 有关以下内容的详细信息配置安全性,请参阅安全

此示例的源副本,请参阅IIS 承载使用内联代码

创建由 IIS 承载的服务

  1. 确认 IIS 已经安装并在计算机上运行。 有关以下内容的详细信息安装和配置 IIS,请参阅安装和配置 IIS 7.0

  2. 为应用程序文件创建一个称为“IISHostedCalcService”的新文件夹,确保 ASP.NET 有权访问该文件夹的内容,并使用 IIS 管理工具创建一个物理上位于此应用程序目录中的新 IIS 应用程序。 当为应用程序目录创建别名时,请使用“IISHostedCalc”。

  3. 在应用程序目录中创建一个名为“service.svc”的新文件。 编辑此文件添加以下代码@ServiceHost元素。

    <%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%>
    
  4. 在应用程序目录中创建 App_Code 子目录。

  5. 在 App_Code 子目录中创建名为 Service.cs 的代码文件。

  6. 将下面的 using 语句添加到 Service.cs 文件的最前面。

    using System;
    using System.ServiceModel;
  7. 将下面的命名空间声明添加到 using 语句后面。

    namespace Microsoft.ServiceModel.Samples
    {
    }
  8. 定义命名空间声明中的服务协定,如下面的代码所示。

     
      [ServiceContract]
    public interface ICalculator
    {
    [OperationContract]
    double Add(double n1, double n2);
    [OperationContract]
    double Subtract(double n1, double n2);
    [OperationContract]
    double Multiply(double n1, double n2);
    [OperationContract]
    double Divide(double n1, double n2);
    }
  9. 在服务协定定义后实现服务协定,如下面的代码所示。

     
      public class CalculatorService : ICalculator
    {
    public double Add(double n1, double n2)
    {
    return n1 + n2;
    }
    public double Subtract(double n1, double n2)
    {
    return n1 - n2;
    }
    public double Multiply(double n1, double n2)
    {
    return n1 * n2;
    }
    public double Divide(double n1, double n2)
    {
    return n1 / n2;
    }
    }
  10. 在应用程序目录中创建一个名为“Web.config”的文件,并将下面的配置代码添加到该文件中。 在运行时,WCF 基础结构使用这些信息来构造客户端应用程序可与其通信的终结点。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <system.serviceModel>
    <services>
    <service
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
    <!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
    <!-- specify customBinding binding and a binding configuration to use -->
    <endpoint address=""
    binding="customBinding"
    bindingConfiguration="Binding1"
    contract="Microsoft.ServiceModel.Samples.ICalculator" />
    <!-- The mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
    <endpoint address="mex"
    binding="mexHttpBinding"
    contract="IMetadataExchange" />
    </service>
    </services> <!-- custom binding configuration - configures HTTP transport, reliable sessions -->
    <bindings>
    <customBinding>
    <binding name="Binding1">
    <reliableSession />
    <security authenticationMode="SecureConversation"
    requireSecurityContextCancellation="true">
    </security>
    <compositeDuplex />
    <oneWay />
    <textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8" />
    <httpTransport authenticationScheme="Anonymous" bypassProxyOnLocal="false"
    hostNameComparisonMode="StrongWildcard"
    proxyAuthenticationScheme="Anonymous" realm=""
    useDefaultWebProxy="true" />
    </binding>
    </customBinding>
    </bindings> <!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
    <behaviors>
    <serviceBehaviors>
    <behavior name="CalculatorServiceBehavior">
    <serviceMetadata httpGetEnabled="True"/>
    <serviceDebug includeExceptionDetailInFaults="False" />
    </behavior>
    </serviceBehaviors>
    </behaviors>
    </system.serviceModel>
    </configuration>

    此示例显式指定配置文件中的终结点。 如果您不希望向服务添加任何终结点,则运行时为您添加默认终结点。 有关以下内容的详细信息默认终结点、 绑定和行为,请参阅简化配置WCF 服务的简化配置

  11. 为了确保正确承载该服务,请打开 Internet Explorer 的实例,导航到该服务的 URL:http://localhost/IISHostedCalc/Service.svc,如果一切正常会如下图:

示例

下面是 IIS 承载的计算器服务的代码的完整列表。

using System;
using System.ServiceModel; namespace Microsoft.ServiceModel.Samples
{ [ServiceContract]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
} public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}

在 IIS 中承载 WCF 服务的更多相关文章

  1. Wcf for wp8 使用iis Express 承载Wcf服务部署发布网站(三)

    我们接下来要做的是 本地电脑当作服务器(模拟外网服务器)来承载Wcf服务程序,通过引用本地电脑ip地址访问wcf服务程序接口 http://192.168.1.123/Service1.svc 一.先 ...

  2. WCF分布式4:客户端访问寄宿在IIS中的WCF服务

    部署过程比较简单,新建一个站点,指向服务的物理路径,设置一个端口.即可. 新建的站点对应一个应用程序池,设置应用程序池中的.NET版本为4.0 写一个测试客户端,访问IIS中的WCF服务,可能会出现, ...

  3. 如何在IIS中承载WCF NetTcpBinding 服务

    这篇博客将介绍如何在IIS中承载NetTcpBinding的服务. 1. 首先准备服务代码. Contract namespace Contract { [ServiceContract] publi ...

  4. WCF中常见的几种Host,承载WCF服务的方法

    1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...

  5. WCF学习笔记(2)——使用IIS承载WCF服务

    通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...

  6. 使用IIS承载WCF服务

    作者:jiankunking 出处:http://blog.csdn.net/jiankunking 1.WCF能够方便的通过IIS承载,此承载模型与ASP.NET和ASP.NET Web Servi ...

  7. SharePoint 2013 中自定义WCF服务

    在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...

  8. iPhone中调用WCF服务

    本文介绍的是跨平台iPhone中调用WCF服务,WCF是由微软发展的一组数据通信的应用程序开发接口,它是.NET框架的一部分,由 .NET Framework 3.0+开始引入 iPhone中调用WC ...

  9. [问题]通过IIS宿主发布WCF服务,客户端添加服务引用出错的解决办法

    环境配置:Web服务器:Windows Server 2008,iis7.5,.net4.0客户端:XPsp3 vs2010 sp1 问题描述:1.确定WCF服务访问地址  http://servic ...

随机推荐

  1. pandas之groupby分组与pivot_table透视表

    zhuanzi: https://blog.csdn.net/qq_33689414/article/details/78973267 pandas之groupby分组与pivot_table透视表 ...

  2. 未找到框架“.NETFramework,Version=v4.5”的引用程序集

    问题描述 一般是在编译的时候会出现这样子的问题, 问题原因: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETF ...

  3. [备忘]Notification的实用

    Intent resultIntent = null; if (!TextUtils.isEmpty(tid)){ resultIntent = new Intent("com.shijie ...

  4. jQuery addClass removeClass toggleClass方法概述

    通过动态改变类名(class),可以让其修改元素呈现出不同的效果.在HTML结构中里,多个class以空格分隔,当一个节点(或称为一个标签)含有多个class时,DOM元素响应的className属性 ...

  5. Dynamic type checking and runtime type information

    动态类型的关键是将动态对象与实际类型信息绑定. See also: Dynamic programming language and Interpreted language Dynamic type ...

  6. Linux关于文件的权限笔记

    1.调整文件的权限命令:chmodLinux的每个文件都定义了文件的拥有者:u(user).拥有组:g(group).其他人:o(others)权限,对应的权限用rwx的组合来定义.使用chmod命令 ...

  7. 【原创】如何编写c#用户登陆后用户名在前台显示

    这种肯定是判断session啦!!!!! @{ string username = (string)Session["username"]; user user = new use ...

  8. date - 打印或设置系统日期和时间

    总览 date [选项]... [+格式] date [选项] [MMDDhhmm[[CC]YY][.ss]] 描述 根据指定格式显示当前时间或设置系统时间. -d, --date=STRING 显示 ...

  9. vs code 用户代码片段 html.json

    {     // Place your snippets for html here. Each snippet is defined under a snippet name and has a p ...

  10. HTTP请求报文与响应报文格式

    请求报文包含三部分: a.请求行:包含请求方法.URI.HTTP版本信息 b.请求首部字段 c.请求内容实体 响应报文包含三部分: a.状态行:包含HTTP版本.状态码.状态码的原因短语 b.响应首部 ...