WCF服务程序本身不能运行,需要通过其他的宿主程序进行托管才能调用WCF服务功能,常见的宿主程序有IIS,WAS,Windows服务,当然在学习WCF技术的时候一般使用控制台应用程序或WinForm程序进行托管。本文将详细介绍如何使用IIS8托管WCF服务程序以及解决可能会碰到的一些问题。步骤比较多,还需耐心看完!

一、安装IIS8

1.本机器是Win8操作系统,默认没有安装IIS。安装IIS8很简单,具体步骤是:控制面板→程序和功能→启用或关闭Windows功能,勾选Internet信息服务节点下的部分功能,

如图所示:

2.安装完毕,重启系统后,在浏览器中输入 http://localhost/,即可看见IIS8界面,表示安装成功,如图:

3.启用WCF服务中的HTTP激活功能,具体步骤是:控制面板→程序和功能→启用或关闭Windows功能,勾选“.Net Framework 4.5 高级服务”节点下的部分功能,

如图所示:

二、编写WCF服务应用程序

1.新建解决方案“IISHostWCF”,添加“WCF服务类库”项目,命名为“WCFService”,如图

该WCF服务的功能很简单,根据参数Id获取相应的价格,代码如下:

1)服务接口代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ServiceModel;namespace WCFService
{[ServiceContract]public interface IGetPrice{[OperationContract]string GetPriceByProductId(int id);}
}

View Code

2)实现接口的服务类代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WCFService
{public class GetPrice : IGetPrice{public string GetPriceByProductId(int id){string price = "0.00";switch (id){case 1:price = "12.34";break;case 2:price = "45.60";break;case 3:price = "78.99";break;default:price = "100.00";break;}return price;}}
}

View Code

2.在解决方案中,添加→新建网站,选择“WCF服务”,命名为“WCFWebSite”,如图

1)把新生成的IService.cs和Service.cs文件删除

2)添加在第一个步骤里新建的WCF服务类库,WCFService.dll

3).修改Service.svc文件

4)使用“WCF服务配置编辑器”编辑web.config文件

web.config代码如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration><appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /></appSettings><system.web><compilation debug="false" targetFramework="4.5" /><httpRuntime targetFramework="4.5"/></system.web><system.serviceModel><services><service behaviorConfiguration="WCFServiceBehavior" name="WCFService.GetPrice"><endpoint address="basic" binding="basicHttpBinding" bindingConfiguration=""name="basicEndPoint" contract="WCFService.IGetPrice" /><endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""name="mexEndPoint" contract="IMetadataExchange" /><host><baseAddresses><add baseAddress="http://localhost:8002/" /></baseAddresses></host></service></services><behaviors><serviceBehaviors><behavior name="WCFServiceBehavior"><serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /><serviceDebug includeExceptionDetailInFaults="false" /></behavior></serviceBehaviors></behaviors><protocolMapping><add binding="basicHttpsBinding" scheme="https" /></protocolMapping>    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /></system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true"/><!--若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。--><directoryBrowse enabled="true"/></system.webServer></configuration>

View Code

5)发布“WCF服务网站”

三、使用IIS托管WCF服务

1.打开IIS管理器,添加网站,如图

2.添加完网站后,右键菜单→管理网站→浏览,弹出页面,选择浏览“Service.svc”文件,

打开后,发现会报错:

经过查找资料,原来是IIS8默认没有添加处理svc文件的处理程序,需手动添加:

1)添加MIME类型

文件扩展名:.svc;MIME类型:application/octet-stream。

2)添加处理程序映射

请求路径: *.svc;

类型:System.ServiceModel.Activation.HttpHandler;

名称:svc-Integrated

添加完毕后,重新启动网站,再次浏览即可成功:

四、测试IIS托管的WCF服务

1.通过VS自带的WCF测试工具

打开“VS2012开发人员命令提示”工具,输入“wcftestclient”,即可打开“WCF测试客户端”:

添加WCF服务测试地址:http://localhost:8001/Service.svc/mex

测试结果如下:

2.新建控制台客户端来测试WCF服务,添加服务引用

以下是简单的测试代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WCFClient
{class Program{static void Main(string[] args){WCFGetPrice.GetPriceClient proxy = new WCFGetPrice.GetPriceClient("basicEndPoint");Console.WriteLine(proxy.GetPriceByProductId(3));Console.ReadKey();}}
}

View Code

结果如下:

至此使用IIS托管WCF服务应用程序详细步骤完毕。

好困啊~~~

转载于:https://www.cnblogs.com/shaomenghao/p/3477693.html

IIS8托管WCF服务相关推荐

  1. 在IIS8添加WCF服务支持

    最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不支持WCF服务svc请求,后来发现IIS8缺少对WCF ...

  2. WCF服务编程 学习笔记(1)

    你或许可以使用某一技术实现某些功能,可以按着指定的要求,完成特定的功能,实现某一想要的效果,这表示你可以使用该技术,会使用该技术,但是我们不能停留在使用的层次上,还要了解它们的运行机制,可能有点深了, ...

  3. 实现基本的Hello World WCF服务(v4.5)

    介绍 在这篇文章中,我们将从头开始实现一个基本的WCF 4.5服务.我们将通过执行以下步骤来构建HelloWorld WCF服务: 创建解决方案和项目 创建WCF服务契约接口 实现WCF服务 在IIS ...

  4. WCF服务自托管(Self-Hosting)

    WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有:IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务 ...

  5. IIS8 添加配置 WCF服务

    今天在Windows8.1 操作系统部署了半天的WCF 一直老是在报错.在这里做个记录 防止下次忘记 在网上查了半天.终于知道原来IIS8不支持WCF服务SVC的请求.所以必须要给IIS8添加WCF服 ...

  6. WCF服务重构实录(上)

    项目需求 之前的项目中采用了WCF,绑定模式选择的是netTcpBinding,宿主选择了控制台方式,主要考虑两方面优点: 方便管理宿主的生命周期 提升服务性能 但是在实际的开发过程中产生了许多问题, ...

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

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

  8. WCF服务编程(4):《WCF服务编程》第3版中文版翻译结束,即将出版

    原文地址: <WCF服务编程>第4版本翻译完毕!2016年底应该出版 [置顶]↑ WCF服务编程(4):<WCF服务编程>第3版中文版翻译结束,即将出版 ↑ 作为世界范围内最经 ...

  9. WCF服务的REST / SOAP端点

    我有一个WCF服务,我想将它作为RESTfull服务和SOAP服务公开. 以前有人做过这样的事吗? #1楼 MSDN现在似乎有一篇文章: https://msdn.microsoft.com/en-u ...

最新文章

  1. 调用 微信接口报错 {errcode:48001,errmsg:api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]}...
  2. 学python最好的方式-Python 学习怎样开始比较好?
  3. 学Android开发 这19个开发工具助你顺风顺水
  4. [USACO06DEC]牛的野餐Cow Picnic DFS
  5. SAP CRM和SAP Hybris的action profile
  6. 《WCF技术内幕》翻译31:第2部分_第6章_通道:概述与正确认识通道。
  7. 飞机上的氧气面罩有什么用_第2部分—另一个面罩检测器……(
  8. 进程和线程的本质和区别
  9. Socket编程实践(5) --TCP粘包问题与解决
  10. ORA-02290:违反检查约束条件(sys_c0011321)什么原因
  11. topcoder srm 525 div1
  12. hibernate简单入门教程(四)---------关联映射
  13. android插件化-apkplug中OSGI服务基本原理-08
  14. git 服务器上新建项目
  15. 砍掉中国90%的科研人员,对科技发展的影响微乎其微,某教授酒后真言!
  16. python 微信小程序签到系统_简易微信小程序签到功能
  17. 【转载】堆排序算法(图解详细流程)
  18. 桌面PDF文件名太长无法删除的问题
  19. 计算机桌面声音图标,电脑声音图标不见了怎么办(图解)
  20. unity 查找所以物体_unity中查找物体的方法

热门文章

  1. 借钱合同有哪些陷阱?
  2. 万劫不复:恐怖悬疑话剧《下一个就是你》
  3. 异构服务器 微服务_Spring Cloud Alibaba Sidecar 多语言微服务异构
  4. 服务器系统wlanapi,没有找到wlanapi.dll怎么办?
  5. 自然哲学的数学原理_物理起源点,牛顿《自然哲学的数学原理》
  6. 重庆大学计算机组成,重庆大学计算机组成原理试题集(含部分答案)
  7. 3D人脸重建——PRNet网络输出的理解
  8. css 盒模型的属性
  9. (转)MySQL自带的性能压力测试工具mysqlslap详解
  10. 您的浏览器没有获得Java Virtual Machine(JVM)支持。可能由于没有安装JVM或者已安装但是没有启用。请安装JVM1.5或者以上版本,如果已安装则启用它。...