IIS8托管WCF服务
WCF服务程序本身不能运行,需要通过其他的宿主程序进行托管才能调用WCF服务功能,常见的宿主程序有IIS,WAS,Windows服务,当然在学习WCF技术的时候一般使用控制台应用程序或WinForm程序进行托管。本文将详细介绍如何使用IIS8托管WCF服务程序以及解决可能会碰到的一些问题。步骤比较多,还需耐心看完!
1.本机器是Win8操作系统,默认没有安装IIS。安装IIS8很简单,具体步骤是:控制面板→程序和功能→启用或关闭Windows功能,勾选Internet信息服务节点下的部分功能,
如图所示:
2.安装完毕,重启系统后,在浏览器中输入 http://localhost/,即可看见IIS8界面,表示安装成功,如图:
3.启用WCF服务中的HTTP激活功能,具体步骤是:控制面板→程序和功能→启用或关闭Windows功能,勾选“.Net Framework 4.5 高级服务”节点下的部分功能,
如图所示:
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服务网站”
1.打开IIS管理器,添加网站,如图
2.添加完网站后,右键菜单→管理网站→浏览,弹出页面,选择浏览“Service.svc”文件,
打开后,发现会报错:
经过查找资料,原来是IIS8默认没有添加处理svc文件的处理程序,需手动添加:
1)添加MIME类型
文件扩展名:.svc;MIME类型:application/octet-stream。
2)添加处理程序映射
请求路径: *.svc;
类型:System.ServiceModel.Activation.HttpHandler;
名称:svc-Integrated
添加完毕后,重新启动网站,再次浏览即可成功:
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服务相关推荐
- 在IIS8添加WCF服务支持
最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不支持WCF服务svc请求,后来发现IIS8缺少对WCF ...
- WCF服务编程 学习笔记(1)
你或许可以使用某一技术实现某些功能,可以按着指定的要求,完成特定的功能,实现某一想要的效果,这表示你可以使用该技术,会使用该技术,但是我们不能停留在使用的层次上,还要了解它们的运行机制,可能有点深了, ...
- 实现基本的Hello World WCF服务(v4.5)
介绍 在这篇文章中,我们将从头开始实现一个基本的WCF 4.5服务.我们将通过执行以下步骤来构建HelloWorld WCF服务: 创建解决方案和项目 创建WCF服务契约接口 实现WCF服务 在IIS ...
- WCF服务自托管(Self-Hosting)
WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有:IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务 ...
- IIS8 添加配置 WCF服务
今天在Windows8.1 操作系统部署了半天的WCF 一直老是在报错.在这里做个记录 防止下次忘记 在网上查了半天.终于知道原来IIS8不支持WCF服务SVC的请求.所以必须要给IIS8添加WCF服 ...
- WCF服务重构实录(上)
项目需求 之前的项目中采用了WCF,绑定模式选择的是netTcpBinding,宿主选择了控制台方式,主要考虑两方面优点: 方便管理宿主的生命周期 提升服务性能 但是在实际的开发过程中产生了许多问题, ...
- WCF中常见的几种Host,承载WCF服务的方法详解
1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...
- WCF服务编程(4):《WCF服务编程》第3版中文版翻译结束,即将出版
原文地址: <WCF服务编程>第4版本翻译完毕!2016年底应该出版 [置顶]↑ WCF服务编程(4):<WCF服务编程>第3版中文版翻译结束,即将出版 ↑ 作为世界范围内最经 ...
- WCF服务的REST / SOAP端点
我有一个WCF服务,我想将它作为RESTfull服务和SOAP服务公开. 以前有人做过这样的事吗? #1楼 MSDN现在似乎有一篇文章: https://msdn.microsoft.com/en-u ...
最新文章
- 调用 微信接口报错 {errcode:48001,errmsg:api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]}...
- 学python最好的方式-Python 学习怎样开始比较好?
- 学Android开发 这19个开发工具助你顺风顺水
- [USACO06DEC]牛的野餐Cow Picnic DFS
- SAP CRM和SAP Hybris的action profile
- 《WCF技术内幕》翻译31:第2部分_第6章_通道:概述与正确认识通道。
- 飞机上的氧气面罩有什么用_第2部分—另一个面罩检测器……(
- 进程和线程的本质和区别
- Socket编程实践(5) --TCP粘包问题与解决
- ORA-02290:违反检查约束条件(sys_c0011321)什么原因
- topcoder srm 525 div1
- hibernate简单入门教程(四)---------关联映射
- android插件化-apkplug中OSGI服务基本原理-08
- git 服务器上新建项目
- 砍掉中国90%的科研人员,对科技发展的影响微乎其微,某教授酒后真言!
- python 微信小程序签到系统_简易微信小程序签到功能
- 【转载】堆排序算法(图解详细流程)
- 桌面PDF文件名太长无法删除的问题
- 计算机桌面声音图标,电脑声音图标不见了怎么办(图解)
- unity 查找所以物体_unity中查找物体的方法
热门文章
- 借钱合同有哪些陷阱?
- 万劫不复:恐怖悬疑话剧《下一个就是你》
- 异构服务器 微服务_Spring Cloud Alibaba Sidecar 多语言微服务异构
- 服务器系统wlanapi,没有找到wlanapi.dll怎么办?
- 自然哲学的数学原理_物理起源点,牛顿《自然哲学的数学原理》
- 重庆大学计算机组成,重庆大学计算机组成原理试题集(含部分答案)
- 3D人脸重建——PRNet网络输出的理解
- css 盒模型的属性
- (转)MySQL自带的性能压力测试工具mysqlslap详解
- 您的浏览器没有获得Java Virtual Machine(JVM)支持。可能由于没有安装JVM或者已安装但是没有启用。请安装JVM1.5或者以上版本,如果已安装则启用它。...