官方解析:Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTPFTP的相关技术。

一、WCF服务的创建

第一步:创建WCF项目

创建完成之后,自动帮我们生成这些文件,2个类,一个接口,一个接口的实现,还有一个App.config配置文件(WCF具体的配置信息都在这个目录下)

 IService1.cs

注:等会将WCF发布到IIS上涉及到网络传输,将对象持久化写到磁盘上,那么我们就需要序列化,实体类、自定义属性、类名上打上相应的标签

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text; namespace WCFDemo
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value); [OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite); // TODO: 在此添加您的服务操作
} // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
// 可以将 XSD 文件添加到项目中。在生成项目后,可以通过命名空间“WCFDemo.ContractType”直接使用其中定义的数据类型。
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello "; [DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
} [DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
}

Service1.cs

注:具体接口实现

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text; namespace WCFDemo
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
} public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
}

App.config

注:http://localhost:8733/Design_Time_Addresses/WCFDemo/Service1/这个地址也就是我们发布到IIS上的服务地址,可修改,视情况而定

 <?xml version="1.0" encoding="utf-8" ?>
<configuration> <appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" />
</system.web>
<!-- 部署服务库项目时,必须将配置文件的内容添加到
主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
<system.serviceModel>
<services>
<service name="WCFDemo.Service1">
<endpoint address="" binding="basicHttpBinding" contract="WCFDemo.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/WCFDemo/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 为避免泄漏元数据信息,
请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<!-- 要接收故障异常详细信息以进行调试,
请将以下值设置为 true。在部署前设置为 false
以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel> </configuration>

如果我们想在创建一个WCF服务怎么办呢?

只需,在项目上,右键->添加->新建项->WCF服务即可,自动会帮我们生成一个接口、一个实现接口类、App.config会多加一些配置信息

第二步:调试,用vs自带的测试工具测试服务是否可行

项目上:右键->调试->启动新实例

之后会出现如下界面

开始测试

到目前为止,WCF服务已经配置好了,下面我们将WCF服务发布到IIS上

二、WCF的发布

第一步:发布WCF服务

项目上:右键->发布

第二步:指定位置

发布后的文件

三、安装IIS(已安装,请忽略安装步骤)

Win10下安装

控制面板->程序->启用或关闭Windows功能

重点:

HTTP错误一定要勾选,否则出现错误时不能够提示错误,这个是非常严重的”

四、WCF服务部署IIS上

第一步:注册WCF组件

如何看是否已经注册了WCF组件,选择:Default Web Site==》功能视图==》处理程序映射,然后再查看*.svc 后缀的文件是否被svc-Integrated 或 svc-ISAPI-4.0_64/32bit 程序处理:

因为我已经将WCF组件注册到IIS上了,没有的请注册

cmd(管理员运行):ServiceModelReg.exe  –i

第二步:aspnet_regiis.exe注册IIS

  由于我们使用的.net framework4.0以上的框架开发的应用程序,但是系统只默认注册了.NET Framework v2.0.50727,如果不注册相应的IIS那么我们访问界面时会弹出以下的错误。

cmd(管理员运行):aspnet_regiis.exe  –i

第三步:为应用程序添加应用程序池

右键->添加应用程序池

第四步:添加网站

选择应用池

为了保证当前网站的安全,需要进行权限验证,点击“连接为”,并按照下面的步骤一次输入用户名、密码,然后选择确定。(这一步可忽略)

确定完成后点击“测试设置”出现下图所示的界面时表示当前身份验证成功。

第五步:浏览当前网站

可能会出这个错误

查阅资料,发生这个错误的原因在于安装了高版本的.net framework 导致这种错误,可以尝试通过下面的方法解决: 

解决方案

 路径:C:\Windows\System32\inetsrv\config
文件:applicationHost.config

找到最后一行代码,在managedHandler 加上“,runtimeVersionv2.0" 即可

 <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />

然后在cmd(管理员):

 第一步:cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
第二步:aspnet_regiis.exe -iru 到第二步为止,基本上都可以解决,重启.svc即可

哎。。。。Win10系统事情在多,下面开始演示如何解决这个问题

百度解决方案如下,利用dism工具依次执行下面命令即可

 cmd(管理员):

 dism /online /enable-feature /featurename:IIS-ISAPIFilter

 dism /online /enable-feature /featurename:IIS-ISAPIExtensions

 dism /online /enable-feature /featurename:IIS-NetFxExtensibility45

 dism /online /enable-feature /featurename:IIS-ASPNET45

.Net WCF服务部署IIS详细解析的更多相关文章

  1. WCF服务部署IIS

    一.将WCF服务部署到IIS上  [转载自简单笑容——http://www.cnblogs.com/skdsxx/p/5072726.html ] 1.首先检测电脑上是否安装了IIS,一般来说Win7 ...

  2. WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法

    本文转载:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html 昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内 ...

  3. WCF服务部署到IIS

    WCF服务部署 一.将WCF服务部署到IIS上 1.首先检测电脑上是否安装了IIS,一般来说Win7以上系统自带IIS 2.下面进行IIS服务的开启设置:  控制面板=>打开或关闭Windos功 ...

  4. WCF学习之旅—WCF服务部署到IIS7.5(九)

    上接   WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...

  5. WCF服务部署到IIS7.5

    下面介绍如何把WCF服务部署到IIS: 为WCF服务创建.svc文件 我们知道,每一个ASP.NET Web服务都具有一个.asmx文本文件,客户端通过访问.asmx文件实现对相应Web服务的调用.与 ...

  6. WCF 一步一步 发布 WCF服务 到 IIS (图)

    WCF 一步一步 发布 WCF服务 到 IIS (图) 使用VS自带的WCFSVCHost(WCF服务主机)发布WCF服务,时刻开发人员测试使用. 下面我们来看一下如何在IIS中部发布一个WCF服务. ...

  7. WCF服务部署

    一.将WCF服务部署到IIS上 1.首先检测电脑上是否安装了IIS,一般来说Win7以上系统自带IIS 2.下面进行IIS服务的开启设置 控制面板=>打开或关闭Windos功能 3.勾选该窗口中 ...

  8. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

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

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

随机推荐

  1. Python day01 课堂笔记

    今天是第一天学习Python课程,主要从计算机基础,Python的历史,环境 ,变量,常量,注释,用户交互,基础数据类型 ,简单的if条件语句和while循环语句这几个来学习,重点的掌握内容是pyth ...

  2. 2015-11-13 linux基础笔记

    1.安装linux 使用光盘,版本CENSOS6.6 2.命令过长请使用\  后enter键换行转义  直到不需要转义后回车运行 3.linux 大小写敏感 4.显示terminal 输出语言  ec ...

  3. 图解Java数据结构之队列

    本篇文章,将对队列进行一个深入的解析. 使用场景 队列在日常生活中十分常见,例如:银行排队办理业务.食堂排队打饭等等,这些都是队列的应用.那么队列有什么特点呢? 我们知道排队的原则就是先来后到,排在前 ...

  4. Docker跨服务器通信Overlay解决方案(下) Consul集群

    承接上文 本文基于上篇文章,详细的场景说明与分析在前篇随笔中业已记录,有兴趣可以移步 Docker跨服务器通信Overlay解决方案(上) Consul单实例 本文主旨 本文为Docker使用Cons ...

  5. 并查集(不相交集合)详解与java实现

    目录 认识并查集 并查集解析 基本思想 如何查看a,b是否在一个集合? a,b合并,究竟是a的祖先合并在b的祖先上,还是b的祖先合并在a上? 其他路径压缩? 代码实现 结语 @(文章目录) 认识并查集 ...

  6. CSS3开启硬件加速

    { transform: translateZ(0); transform: translate3d(0,0,0);}<!-- transform: translateZ(0); transfo ...

  7. python 36 进程池、线程池

    目录 1. 死锁与递归锁 2. 信号量Semaphor 3. GIL全局解释器锁:(Cpython) 4. IO.计算密集型对比 4.1 计算密集型: 4.2 IO密集型 5. GIL与Lock锁的区 ...

  8. Delphi - Windows自动计划任务与ParamStr详解

    Windows自动计划任务与ParamStr详解 ParamStr函数: ParamStr(1),..ParamStr(N) ParamStr(1)代表程序入口的第一个参数,同理,ParamStr(N ...

  9. maven构建springmvc过程中遇到的一些问题

    1.spring的配置文件,xsd不要配版本号 2.spring配置datasource的三种方式 3.springmvc与spring扫描注解的冲突 4.NoClassDefFoundError: ...

  10. lightoj 1021 - Painful Bases(数位dp+状压)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1021 题解:简单的数位dp由于总共就只有16个存储一下状态就行了.求各种进制能 ...