将使用netTcp绑定的WCF服务寄宿到IIS7上全记录

简介:

摘要

在项目开发中,我们可能会适时的选择http或者tcp绑定的wcf服务,可以使用控制台来托管服务,也可以使用IIS来承载服务,由于IIS本身对于请求和异常的处理能力,使得我们可以省去很多开发精力而成为托管服务的首选,之前我做的WCF服务时托管在控制台的,今天摸索了一下采用tcp绑定的wcf托管到IIS7的过程,分享一下,希望能帮助到想移植服务到IIS的朋友。

实例

依然是以一个服务作为例子展开,我们新建一个WCF Application,默认有一个简单的服务Service1.svc,  

代码
[ServiceContract] 
public   interface  IService1 

[OperationContract] 
string  GetData( int  value); 
}
public   class  Service1 : IService1 

public   string  GetData( int  value) 

return   string .Format( " You entered: {0} " , value); 

}
web.config的配置非常简单,自动生成不作介绍。

开始移植

接下来我们需要将这个普通的服务移植Host到IIS上,

第一.首先需要更改web.config文件,将服务配置为net.tcp绑定

配置文件如下:

  

代码
< system.serviceModel >  
< bindings >  
< netTcpBinding >  
< security  mode ="None" >  
< transport  clientCredentialType ="Windows"  protectionLevel ="EncryptAndSign"   />  
< message  clientCredentialType ="Windows"   />  
</ security >  
</ binding >  
</ netTcpBinding >  
</ bindings >  
< services >
 
< service  behaviorConfiguration ="MyBehavior"  name ="WCFService.Service1" >  
< endpoint  address =""  binding ="netTcpBinding"  contract ="WCFService.IService1"  bindingConfiguration ="netTcpBindConfig" ></ endpoint >  
< endpoint  address ="mex"  binding ="mexTcpBinding"  contract ="IMetadataExchange"   ></ endpoint >  
</ service >
 
</ services >  
< behaviors >  
< serviceBehaviors >  
< behavior  name ="MyBehavior"   >  
< serviceMetadata />  
< serviceDebug  includeExceptionDetailInFaults ="true"   />  
< dataContractSerializer  maxItemsInObjectGraph ="6553600" />  
</ behavior >
 
</ serviceBehaviors >  
</ behaviors >  
</ system.serviceModel >
 

第二,我们需要将WCF Application这个项目的

属性更改一下,方便开发时的访问服务,右击服务的项目属性,切换到WEB页面 

 在创建虚拟目录时也许VS会提示需要安装IIS6的一些组件,那么我们按照提示打开”windows的更新安装“

要将WCF的tcp绑定方式的服务host在IIS上,首先你需要启用这个功能 

 

其次,需要安装IIS6的兼容性和管理工具 

 

等这些都做完之后你可以浏览一下服务了,但是有可能会遇到一个错误提示:

处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandl…

出现这个问题你需要确认两个问题,第一个是SVC的文件请求是哪个DLL来处理的,

 

 第二个是确认等IIS7全部配置完毕后,需要重新将asp.net4.0注册到IIS上 

 在vs2010中再浏览一下服务http://localhost/WCFService/Service1.svc,发现已经OK了 

 于是,我们可以正常引用并使用这个服务了 

 引用服务完成后,调用的效果是: 






     本文转自wengyuli 51CTO博客,原文链接:http://blog.51cto.com/wengyuli/586564,如需转载请自行联系原作者

 

相关文章
|
4月前
|
网络协议 文件存储 数据安全/隐私保护
【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav
【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav
|
10月前
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
6月前
|
开发框架 .NET Apache
windows安装IIS服务
windows安装IIS服务
36 0
|
7月前
|
C# Windows
C#建立最简单的web服务,无需IIS
C#建立最简单的web服务,无需IIS
|
9月前
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
38 0
|
9月前
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
62 0
|
9月前
|
XML 数据格式 Windows
IIS服务启动提示当文件已存在时,无法创建该文件,183
IIS服务启动提示当文件已存在时,无法创建该文件,183
247 0
|
10月前
Visual Studio 2022 创建 WCF服务 找不到
Visual Studio 2022 创建 WCF服务 找不到
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
103 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF使用纯代码的方式进行服务寄宿
服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。
850 0