IIS8托管WCF服务

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京师范大学认知神经科学 计算机,北京师范大学认知神经科学和学习国家重点实验室.pdf...

北京师范大学认知神经科学和学习国家重点实验室北京师范大学认知神经科学与学习国家重点实验室DTI 、静息fMRI、形态学测量原理及数据分析与应用深度讲习班(第二轮通知)近年来&#xff0c;磁共振技术已广泛地应用到神经科学、认知神经科学、临床医学等领域的研究&#xff0c;而…

JAVA面向对象-----instanceof 关键字

instanceof 关键字 1&#xff1a;快速演示instanceof Person pnew Person();System.out.println( p instanceof Person); 2&#xff1a;instanceof是什么&#xff1f; 1&#xff1a;属于比较运算符&#xff1a; 2&#xff1a;instanceof关键字&#xff1a;该关键字用来判断一…

电子工程师必去的论坛网站

Abstract 搞电子不能闭门造车&#xff0c;要到网上去交流交流&#xff0c;做个网络吸血鬼也好。本人偶然也发一些资料&#xff0c;还是要感谢活跃在各大论坛上的大虾们&#xff0c;让小弟要走了不少弯路。有问题google一下&#xff08;不是本人崇洋媚外&#xff0c;google的功能…

对象的引用

int、datetime、bool、char等类型都属于值类型&#xff08;valuetype&#xff09;&#xff0c;赋值的时候是传递拷贝。 普通的对象则是引用类型&#xff0c;赋值的时候是传递引用。传递给函数也是引用传递的。转载于:https://www.cnblogs.com/roboot/archive/2012/02/15/235329…

Cesium应用篇:3控件(3)SelectionIndicator InfoBox

假设这样一个场景&#xff0c;用户在Cesium球上加载了一个GeoJson文件&#xff08;DataSource&#xff09;&#xff0c;里面是全美国所有州的Geometry信息&#xff08;Entity&#xff09;&#xff0c;叠加到球面后&#xff0c;你自然会有一种冲动&#xff0c;点击某一个州&…

北理工计算机学院新闻,北理工计算机学子勇夺CVPR 2021 AI安全国际顶级赛事季军...

2021年4月19日&#xff0c;CVPR 2021挑战者计划第六期落下帷幕。由北理工计算机学院教师李元章、张全新及广州大学李进教授指导的DemiguiseWoo战队&#xff0c;在挑战赛赛道二“ImageNet无限制对抗攻击”发起冲击&#xff0c;最终以9303.6的总分取得决赛第三名的好成绩&#xf…

字符串入门

暴力 字典树总结&#xff1a;字典树的功能就是map字符串得到编码或者查询前缀关系套模板的时候注意t,s,&#xff0d;‘a’,[26],sz0的初始化还有一个问题&#xff0c;到底字典树开多少内存比较合适&#xff0c;反正至少是要开字符总长度*2hdu1251 http://acm.hdu.edu.cn/showpr…

C++ 的基础概念(3)——多态详解。

最近两次面试都问到了多态&#xff0c;我也不得不重视起来了&#xff0c;最近最大的收获就是&#xff1a;基础知识很重要&#xff0c;就算你很会写代码&#xff0c;但是面试官问你基础知识答不上来的话&#xff0c;也很难被人赏识和录用&#xff0c;所以还是要多补补基础概念&a…

美育在计算机教育中应用,在现代教育技术中绽放数学美育之花

21世纪是信息化的社会&#xff0c;计算机、网络等现代技术的飞速发展&#xff0c;作为现代教育技术&#xff0c;计算机多媒体技术和网络技术已经越来越多地走进小学数学课堂&#xff0c;为深化教学改革&#xff0c;培养学生能力&#xff0c;发展学生个性&#xff0c;提供了崭新…

.NET Forms身份验证

.NET表单身份验证 ASP.NET Forms 身份验证的简单实现&#xff1a;1&#xff09;在Web.config文件中配置应用程序使用 Forms 身份验证&#xff1b;2&#xff09;创建登陆页面&#xff0c;将用户身份验证票证添加到Cookie集合。1.配置文件中设置为Forms验证<authentication mo…

Oracle SQL篇(三)Oracle ROWNUM 与TOP N分析

首先我们来看一下ROWNUM&#xff1a;含义解释&#xff1a;1、rownum是oracle为从查询返回的行的编号&#xff0c;返回的第一行分配的是1&#xff0c;第二行是2&#xff0c;依此类推。这是一个伪列&#xff0c;可以用于限制查询返回的总行数。2、rownum不能以任何基表的名称作为…

C++ Primer 第10章 pair类型

//10.2.cpp //至少使用三种方法创建pair对象。 //编写三个版本的程序&#xff0c;分别采用不同的方法来创建pair对象 //方法1&#xff1a;在定义pair对象时提供初始化式来创建pair对象#include<iostream> #include<vector> #include<utility> #include<st…

计算机对口升学可以报考的学校,对口升学可以报考的学校都在这里,赶快来收藏吧...

对口升学指对口高考&#xff0c;在平常又叫对口单招&#xff0c;对口升学&#xff0c;是从中等职业学校毕业生招生&#xff0c;强调中等职业学校毕业生对口升高职的专业技能考试&#xff0c;以专业技能成绩为主要录取依据的招生办法。报名条件具有正式学籍的中等职业学校毕业生…

Visual Studio 常用快捷键 (二)

想不到上一篇 【Visual Studio 常用快捷键】 受这么多人的欢迎。看来大家对Visual Studio的用法非常感兴趣。 接下来我准备写一个 “Visual Studio使用技巧 ” 一个系列的博客。 希望对大家有所帮助 本篇继续介绍几个常用的快捷键 阅读目录 按两下Tab键回退到光标的上一次位置…

js 兼容event.target

function getEventTarget(e){ewindow.event||e;return e.srcElement||e.target; }转载于:https://www.cnblogs.com/manong13/archive/2012/02/23/2364443.html

企业邮箱收发信息服务器怎么设置,网易闪电邮企业邮箱收发设置教程(IMAP)...

网易闪电邮企业邮箱收发设置教程(IMAP)发表时间 2019-05-30人气 73(1)启动闪电邮后&#xff0c;点击“邮箱---新建邮箱账户”菜单&#xff0c;如下图&#xff1a;(2)输入“邮箱地址和密码”&#xff0c;点击下拉箭头继续设置&#xff0c;设置完成后点击下一步&#xff0c;如下图…

订餐系统之Excel批量导入

批量导入现在基本已经成为各类系统的标配了&#xff0c;当前&#xff0c;我们订餐系统也不例外&#xff0c;什么商家呀、商品呀、优惠码之类的&#xff0c;都少不了。毕竟嘛&#xff0c;对非开发人员来说&#xff0c;看到Excel肯定比看到很多管理系统还是要亲切很多的。这里&am…

需要忽略的一些信号

程序往往会因为收到一些信号导致退出&#xff0c;但很多时候并不是我们想要的&#xff0c;比如往一个已经关闭的socket连接发送数据就会受到SIGPIPE,此信号默认会退出程序&#xff0c;但其实大部分时候我们并不想这么做&#xff0c;所以需要忽略一些信号。常见的有 SIGPIPE SIG…

获取网页中选中的文字

获取页面中选中的文字 //获取页面中选中的文字 function getSelectedText(){if(window.getSelection){ //FFreturn window.getSelection().toString();}else{ //IEreturn document.selection.createRange().text;} }设置或获取输入框的选中文字 //设置文字选中 function setSe…

云服务器和独享虚拟主机的区别,独享虚拟主机和云服务器的几大区别

独享虚拟主机和云服务器的几大区别发布时间&#xff1a;2020-10-15 19:05:51来源&#xff1a;亿速云阅读&#xff1a;99作者&#xff1a;Leah栏目&#xff1a;云计算今天就跟大家聊聊有关独享虚拟主机和云服务器的几大区别&#xff0c;可能很多人都不太了解&#xff0c;为了让大…