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)服务接口代码
![](/assets/blank.gif)
![](/assets/blank.gif)
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)实现接口的服务类代码
![](/assets/blank.gif)
![](/assets/blank.gif)
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代码如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
<?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服务,添加服务引用
以下是简单的测试代码:
![](/assets/blank.gif)
![](/assets/blank.gif)
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 ...
最新文章
- 皮一皮:文化人的情侣头...
- 神经网络的收敛标准有最优值吗?
- UIProgressView的使用
- HTTP header中的 Cache-control
- 计算机信息科学蔺泽浩,上海交通大学计算机科学与工程系(CSE)
- 德佑地产房产经纪人区域总监访谈:有肌肉,更有内涵!
- STM32工作笔记0088---时间标志组和同时等待多个内核对象
- Linux C++使用MySQL数据库
- java 接收前台富文本_前后端分离ueditor富文本编辑器的使用-Java版本
- 服务器虚拟盘怎么设置,服务器虚拟内存设置在什么盘
- html背景图片大小嵌套,div嵌套div 背景图片 不显示的问题
- 计算机组成与原理名词解释,计算机组成原理名词解释与简答
- linux磁盘文件大小排序,Linux中查看磁盘大小、文件大小、排序方法小结
- 阿里云acp证书有用吗?阿里云acp证书考试内容有哪些?
- LeetCode 热题 HOT — 字母异位词分组
- [数值计算-17]:最小二乘法的求解2 - 二元二次线性方程组求解
- 浅谈软件定制开发与软件外包的区别
- FII-PRA006/010开发板硬件实验一
- 了解NMCLI网络管理工具以及使用NMCLI配置网络
- JDK8经典特性回顾
热门文章
- 最穷的日子,你是如何熬过来的?
- 赫塔•米勒获诺贝尔文学奖说明了什么?
- 自主学习 提问的智慧——学习中遇到难题怎么破?
- 尺度空间(Scale space)理论
- python爬取歌曲评论_python 爬取歌曲评论的简单示例
- cad移动时捕捉不到基点_硬盘或移动硬盘认不到时,应该怎样进行故障的检测才正确...
- python函数增强代码可读性_写Python必须知道的这几个代码技巧!你会吗?
- 台式计算机计量单位,计算机的计量单位以及常见的数据类型
- Unity 2017 Game Optimization 读书笔记 Dynamic Graphics(2)
- php mysql 表关联,mysql的多表关联_MySQL